ios使用mailcore发送电子邮件不工作

g52tjvyc  于 2022-11-19  发布在  iOS
关注(0)|答案(2)|浏览(885)

我正在尝试使用MailCore发送电子邮件,但是电子邮件没有发送。如果我做错了什么,请提出建议。发送电子邮件的代码如下:

-(void) sendMail{
     NSLog(@"entered");
    CTCoreMessage *testMsg = [[CTCoreMessage alloc] init];
    [testMsg setTo:[NSSet setWithObject:[CTCoreAddress addressWithName:@"recipients name" email:@"recipient@gmail.com"]]];
    [testMsg setFrom:[NSSet setWithObject:[CTCoreAddress addressWithName:@"sender name(me)" email:@"my_e_mail@google.com"]]];
    [testMsg setBody:@"This is a test message!"];
    [testMsg setSubject:@"This is a subject"];
    NSLog(@"Init values");
    NSError *error;
    BOOL success = [CTSMTPConnection sendMessage:testMsg
                                          server:@"smtp.gmail.com"
                                        username:@"my_e_mail"
                                        password:@"pwd"
                                            port:587
                                  connectionType:CTSMTPConnectionTypeStartTLS
                                         useAuth:YES
                                           error:&error];
    NSLog(@"Success is %c", success);
    if (!success) {
        // Present the error
        NSLog(@"Mail not sent");
    }
}
k0pti3hp

k0pti3hp1#

Here it's the working solution..!!

        let smtpSession = MCOSMTPSession()
            smtpSession.hostname = "smtp.gmail.com"
            smtpSession.username = "XXX@gmail.com"
            smtpSession.password = "xxxxxxx"
            smtpSession.port = 465 // Gmail port number
        smtpSession.authType = MCOAuthType.xoAuth2
            smtpSession.connectionType = MCOConnectionType.TLS
            smtpSession.connectionLogger = {(connectionID, type, data) in
                if data != nil {
                    if let string = NSString(data: data!, encoding: String.Encoding.utf8.rawValue){
                        NSLog("Connectionlogger: \(string)")
                    }
                }
            }

            let builder = MCOMessageBuilder()
        builder.header.to = [MCOAddress(displayName: "Vishnu", mailbox: senderEMail) as Any]
        builder.header.from = MCOAddress(displayName: SingletonClass.sharedInstance.userName, mailbox: SingletonClass.sharedInstance.userEmail)
        builder.header.subject = "MyMessage"
            builder.htmlBody = "Hey Buddy, this is a test message!"
        
            let rfc822Data = builder.data()
            let sendOperation = smtpSession.sendOperation(with: rfc822Data!)
            sendOperation?.start { (error) -> Void in
                if (error != nil) {
                    print("Error sending email: \(error?.localizedDescription)")
                    NSLog("Error sending email: \(error?.localizedDescription)")
                } else {
                    print("Successfully sent email!")
                    NSLog("Successfully sent email!")
                }
            }
7lrncoxx

7lrncoxx2#

这是您可以使用的示例代码:

MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init];
smtpSession.hostname = @"smtp.gmail.com";
smtpSession.port = 465;
smtpSession.username = USERNAME;
smtpSession.password = PASSWORD;
smtpSession.connectionType = MCOConnectionTypeTLS;

MCOMessageBuilder * builder = [[MCOMessageBuilder alloc] init];
[[builder header] setFrom:[MCOAddress addressWithDisplayName:nil mailbox:USERNAME]];
NSMutableArray *to = [[NSMutableArray alloc] init];
for(NSString *toAddress in RECIPIENTS) {
    MCOAddress *newAddress = [MCOAddress addressWithMailbox:toAddress];
    [to addObject:newAddress];
}
[[builder header] setTo:to];
NSMutableArray *cc = [[NSMutableArray alloc] init];
for(NSString *ccAddress in CC) {
    MCOAddress *newAddress = [MCOAddress addressWithMailbox:ccAddress];
    [cc addObject:newAddress];
}
[[builder header] setCc:cc];
NSMutableArray *bcc = [[NSMutableArray alloc] init];
for(NSString *bccAddress in BCC) {
    MCOAddress *newAddress = [MCOAddress addressWithMailbox:bccAddress];
    [bcc addObject:newAddress];
}
[[builder header] setBcc:bcc];
[[builder header] setSubject:SUBJECT];
[builder setHTMLBody:BODY];
NSData * rfc822Data = [builder data];

MCOSMTPSendOperation *sendOperation = [smtpSession sendOperationWithData:rfc822Data];
[sendOperation start:^(NSError *error) {
    if(error) {
        NSLog(@"%@ Error sending email:%@", USERNAME, error);
    } else {
        NSLog(@"%@ Successfully sent email!", USERNAME);
    }

您可以在此处找到此示例代码(Sample Code)的参考。

相关问题