我试图在没有显示编辑器的情况下发送带有照片附件的电子邮件。最后,我试图这样做,当有人登录应用程序时,它会自动向他们发送电子邮件。
我的实施:
if let videoConnection = stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo) {
videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
//initiates a still image and returns
//samplebugger data was captured
stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {(sampleBuffer, error) in
if (sampleBuffer != nil) {
var imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
//creates core graphics image
var dataProvider = CGDataProviderCreateWithCFData(imageData)
var cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, kCGRenderingIntentDefault)
var image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.Right)
//saves image after taken
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
var myController = MFMailComposeViewController()
myController.mailComposeDelegate = self
myController.setSubject(" Your Sherpa Photo")
myController.setMessageBody("hello World", isHTML: false)
myController.setToRecipients(["keli5466@colorado.edu"])
var emailimageData = UIImagePNGRepresentation(image)
myController.addAttachmentData(emailimageData, mimeType: "image/png", fileName: "image")
self.presentViewController(myController, animated: true, completion: nil)
}
})
}
// ...
func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
if result.value == MFMailComposeResultSent.value {
let alertView = UIAlertView()
alertView.message = "Mail Sent!"
alertView.addButtonWithTitle("OK")
alertView.show()
}
self.dismissViewControllerAnimated(false, completion: nil)
}
答案 0 :(得分:1)
简短的回答:你无法通过设计做到这一点。在没有显示撰写邮件视图控制器的情况下发送电子邮件的唯一方法是,如果您有一台提供邮件服务的服务器,但您必须收集用户的邮件凭据。
Apple不希望第三方开发者从用户的帐户发送电子邮件,用户是单击按钮并进行发送的用户。这可以保护用户免受在用户不知情或未经许可的情况下发送邮件的应用。
想象一下,如果没有这种限制,垃圾邮件就会爆炸。