【问题标题】:How to send emails in Swift using Mailgun如何使用 Mailgun 在 Swift 中发送电子邮件
【发布时间】:2015-06-20 21:35:24
【问题描述】:

我需要在我正在处理的 Swift 项目中发送自动电子邮件。到目前为止,我最好的领导似乎是使用 Mailgun。 (如果有人喜欢其他东西,我愿意提供更好的选择)

Swift 没有在他们的文档中的 Mailgun API 参考中列出,我也没有看到 Objective-c。我发现的唯一一篇关于他的文章是one

更新

我一直在尝试将所有内容拼凑起来,这就是我目前所取得的成果。

我能够通过 cocoapods 安装 Mailgun。在 Swift 中使用它有点棘手。

我使用以下 pod 文件设置 cocoapods:

target 'TestApp' do
pod 'mailgun', '~> 1.0.3'
end

target 'TestAppTests' do
end

有了这个 podfile,我可以运行 pod install 并设置依赖项。然后我在构建设置中设置了一个 Objective-C-Bridging Header。我使用了以下 Objective-C 桥接头。

#ifndef Promises_Promises_Bridging_Header_h
#define Promises_Promises_Bridging_Header_h
#import <mailgun/Mailgun.h>
#import "testMail.h"
#endif

我遇到了一段时间的链接错误,但我需要通过工作区打开项目,我必须转到 Product -> Schemes -> Edit Schemes 并添加 Pods-mailgun到列表的顶部,然后它会让我构建。

现在我想利用 MailGun API。文档说要执行以下操作。

Mailgun *mailgun = [Mailgun clientWithDomain:@"samples.mailgun.org" apiKey:@"key-3ax6xnjp29jd6fds4gc373sgvjxteol0"];

[mailgun sendMessageTo:@"Jay Baird <jay.baird@rackspace.com>" 
                  from:@"Excited User <someone@sample.org>" 
               subject:@"Mailgun is awesome!" 
                  body:@"A unicode snowman for you! ☃"];

【问题讨论】:

    标签: ios objective-c email swift mailgun


    【解决方案1】:

    如果您希望尽可能多地使用 Swift,可以尝试另一种选择:

    1. 如果您还没有桥接头,请创建一个虚拟 Objective-c 文件(将新文件添加到项目中)。 Xcode 会询问您是否要添加头文件(这会自动为您整理头文件)

    2. 将此添加到您的桥接头中(前提是您已经使用可可豆荚导入了邮筒): #import "mailgun/Mailgun.h"

    3. 在您的 swift 类中导入 maligun: import mailgun

    4. 像在 Objective-C 中一样在 swift 中使用 mailgun 的 API:

      @IBAction func sendEmail(_ sender: Any) {
      
          let mailgun = Mailgun.client(withDomain: "samples.mailgun.org", apiKey: "key-3ax6xnjp29jd6fds4gc373sgvjxteol0")
      
          mailgun?.sendMessage(to: "Jay Baird <jay.baird@rackspace.com>", from: "Excited User <someone@sample.org>", subject: "Mailgun is awesome!", body: "A unicode snowman for you! ☃")
      
      }
      

    【讨论】:

    • 是否可以将同一条消息发送给多个收件人?
    【解决方案2】:

    我想我和你面临着完全相同的问题。但是我对您使用了多少个 .h 和 .m 文件以及每个文件包含什么感到有些困惑。我对obj C一无所知,所以我试图盲目地跟随你。

    如果我错了,请纠正我。

    • 您有一个 .h 桥接头文件,其中包含:

    //
    //  Use this file to import your target's public headers that you would like to expose to Swift.
    //
    
    #import "AFNetworking.h"
    #import <mailgun/Mailgun.h>
    

    • 您有一个 .m 文件,其中包含:

    #import <Foundation/Foundation.h>
    #import <mailgun/Mailgun.h>
    
    @interface mailTest: NSObject
    - (void) sendMail: (NSString*)email;
    
    @end
    

    • 在你的 Viewcontroller.swift 中你有(让我们在一个按钮中说)这个:

    import UIKit
    
    class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    @IBAction func myButton(sender: UIButton) {
        var test: mailTest = mailTest()
        test.sendMail("testemail@testemail.com")
    }
    }
    

    对吗?

    【讨论】:

    • 在我最初的天真中,我把它弄得过于复杂了。我以为我只能通过objective-c 类访问objective-c 方法,而这根本不需要。 Objective-C 和 Swift 都向后和向前兼容。因此,只需在您的桥接头中导入“#import ”,您就可以像调用 swift 方法一样调用 Mailgun 方法!例如:var mailgun = Mailgun.clientWithDomain(...)。另外,我没有否决您的问题,对我来说,它的格式似乎很好,但也许有人对您提出问题作为答案感到不安。 Idk,我猜运气不好。希望这有助于 +1
    • 甜蜜,传统上在堆栈中,当有帮助时我们会投票;)@Tromos
    • 是的,我有这个想法。事实上,我一直在跟踪帮助我工作的人。因为我是一个新用户,所以我需要更多的代表才能做到这一点。今天这个功能是为我解锁的,所以你去:)
    【解决方案3】:

    至此,我已经回答了我自己的问题。这个过程并没有太可怕。使用 cocoapods 安装 mailgun。 使用objective-c 桥接头链接所需的objective-c 代码。 创建一个目标 c 文件来存放调用 mailgun 操作的方法并使用它。

    #import <Foundation/Foundation.h>
    #import <mailgun/Mailgun.h>
    
    @interface mailTest: NSObject
    - (void) sendMail: (NSString*)email;
    
    @end
    

    然后在我的快速代码中我只是调用:

                var test: mailTest = mailTest()
                test.sendMail("testemail@testemail.com")
    

    这是 mailTest 头文件。我创建了一个实现 sendMail 方法并从 API 调用代码的 .m 文件,它运行良好。唯一可能具有挑战性的事情是设置 mailgun 帐户并配置您的域以便可以发送电子邮件,但这与代码无关。

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      相关资源
      最近更新 更多