如何使用 Mailgun 在 Swift 中发送电子邮件

How to send emails in Swift using Mailgun

我需要在我正在处理的 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 安装并设置依赖项。然后我在构建设置中设置了一个 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! ☃"];

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

#import <Foundation/Foundation.h>
#import <mailgun/Mailgun.h>

@interface mailTest: NSObject
- (void) sendMail: (NSString*)email;

@end

然后在我的 swift 代码中调用:

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

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

我想我面临着与您完全相同的问题。但我对您使用了多少 .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")
}
}

对吗?

如果您想尽可能多地站在 Swift 一边,您可以尝试另一种选择:

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

  2. 将此添加到您的桥接头(前提是您已经使用 cocoa pods 导入了邮件枪): #import "mailgun/Mailgun.h"

  3. 在您的 swift class 中导入 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! ☃")
    
    }