当用户在我的IOS应用程序上创建帐户时,我想要发送给他的自动“谢谢”电子邮件,我该怎么做?我看到一家名为mailgun.com的公司,但他们不支持swift。 Parse支持这个吗?我该怎么办?
如果parse支持此功能,请提供有关如何进行此设置的链接。 这是我将使用的代码。
self.loginComplete("example@example.com")
func loginComplete(Email:String) {
\\send automatic email to the user.
}
答案 0 :(得分:7)
就像Duncan C已经提到的那样,你无法从你的iOS应用程序发送电子邮件。唯一可行的解决方案是使用提供API来发送电子邮件的服务器。
如果您想使用mailgun.com,我已经制作了示例代码:
let request: NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "https://api.mailgun.net/v3/{YOUR SANDBOX DOMAIN}/messages")!)
request.HTTPMethod = "POST"
// Basic Authentication
let username = "api"
let password = "{YOUR API-KEY}"
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions([])
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
let bodyStr = "from=Mailgun Sandbox <{YOUR SANDBOX DOMAIN}>&to=Receiver name <{YOUR RECEIVER EMAIL}>&subject=Test&text=thank you!"
// appending the data
request.HTTPBody = bodyStr.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
// ... do other stuff here
})
task.resume()
目标C
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://api.mailgun.net/v3/{YOUR SANDBOX DOMAIN}/messages"]];
request.HTTPMethod = @"POST";
NSString *username = @"api";
NSString *password = @"{YOUR API-KEY}";
NSString *loginString = [NSString stringWithFormat:@"%@:%@", username, password];
NSData *loginData = [loginString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64LoginString = [loginData base64EncodedStringWithOptions:0];
NSString *requestValue = [NSString stringWithFormat:@"Basic %@", base64LoginString];
[request setValue:requestValue forKey:@"Authorization"];
NSString *bodyStr = @"from=Mailgun Sandbox <{YOUR SANDBOX DOMAIN}>&to=Receiver name <{YOUR RECEIVER EMAIL}>&subject=Test&text=thank you!";
// appending the data
request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// ... do other stuff here
}];
[task resume];
注意强>
由于新的App Transport Security,您必须向指定Mailgun API的 Info.plist 文件添加声明,因为它们在撰写本文时不支持最新的SSL技术。这是一个链接和一个示例配置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mailgun.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
答案 1 :(得分:2)
简短的回答是,“你不能”。 Apple不希望应用程序能够从用户的邮件帐户发送电子邮件,除非用户启动发送。你必须使用Apple的MFMailComposeViewController,它可以向用户显示电子邮件,准备发送,然后用户点击发送按钮实际发送。
如果要自动发送,则需要连接到支持发送电子邮件的服务器,否则您将无法使用用户的电子邮件帐户进行发送。您必须使用嵌入在应用程序中的电子邮件凭据(或提示用户提供其凭据)