2015-04-15 52 views
4

我需要在我正在處理的Swift項目中發送自動電子郵件。到目前爲止,我最好的領導似乎是使用Mailgun。 (如果有人喜歡別的東西,我可以選擇更好的選擇)如何使用Mailgun在Swift中發送電子郵件

Swift未在其文檔中的Mailgun API參考中列出,並且我也沒有看到objective-c。關於他的我發現的唯一一篇文章是one

更新

我一直在試圖拼湊的一切,這是我到目前爲止已經得到了。

我能夠通過cocoapods安裝Mailgun。在Swift中使用它有點棘手。

我設置的CocoaPods具有以下莢文件:

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

target 'TestAppTests' do 
end 

有了這個podfile我能夠跑吊艙安裝和設置的依賴關係。然後我在構建設置中設置Objective-C-Bridging標題。我使用了下面的目標-C橋接頭。

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

我得到一個鏈接錯誤一段時間,但我需要有通過工作空間打開的項目,我不得不去產品 - >方案 - >編輯方案和豆莢,mailgun增加列表的頂部,然後它會讓我建立。

現在我想利用MailGun API。文檔說要做以下事情。

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

[mailgun sendMessageTo:@"Jay Baird <[email protected]>" 
        from:@"Excited User <[email protected]>" 
       subject:@"Mailgun is awesome!" 
        body:@"A unicode snowman for you! ☃"]; 

回答

0

在這一點上,我已經回答了我自己的問題。這個過程並不太可怕。使用cocoapods安裝mailgun。 使用Objective-C橋接頭鏈接所需的Objective-C代碼。 創建一個目標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("[email protected]") 

這裏是mailTest頭文件。我創建了一個實現sendMail方法的.m文件,並從API中調用代碼,並且它工作得很好。唯一可能會遇到的挑戰是設置郵件帳戶並配置您的域名,以便發送電子郵件,但這不是代碼相關的。

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。迅速你有(讓說在一個按鈕):

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("[email protected]") 
} 
} 

這是正確的嗎?

+1

爲什麼要投票? – Tromos

+2

在我的天真中,我原本就是這麼過分的。我以爲我只能通過一個不需要的objective-c類訪問objective-c方法。 Objective-C和Swift都是向後兼容的。因此,只需在橋接頭中導入「#import 」,就可以像調用快速方法一樣調用Mailgun方法! EX:var mailgun = Mailgun.clientWithDomain(...)。另外,我並沒有低估你的問題,對我來說它似乎格式不錯,但也許有人不高興,你問一個問題作爲答案。 Idk,我猜想運氣不好。希望這有助於+1 – Unome

+0

它像一個魅力工作!讚美你! – Tromos

2

還有,如果你想,你可以嘗試儘可能是在雨燕側另一種選擇:

  1. 如果你沒有一個橋接報的是,創建一個虛擬的Objective-C文件(將新文件添加到項目中)。 Xcode中會詢問你是否將要添加一個頭文件(這將自動整理出標題爲你)

  2. 添加到您的橋接報頭(使用可可豆莢提供您是否已經導入郵件槍): #import "mailgun/Mailgun.h"

  3. 在迅速類
  4. 進口maligun: import mailgun

  5. 只需使用mailgun的API中迅速,你會在Objective-C:

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

是否有可能發送相同的消息給多個收件人? – Tester

相關問題