Closed abhinavguptas closed 11 years ago
Could you show the code you use to reproduce it?
Hoa V. Dinh
On Saturday, August 10, 2013 at 10:26 AM, Abhinav Gupta wrote:
This error comes randomly when sending email, I am using Gmail + XOauth2. With connection logger, this line seems to be culprit : 503 5.5.1 RCPT first. om2sm26921682pbc.30 -
gsmtp
Here are full logs for further reference 2013-08-10 22:47:01.230 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.230 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [0] 220 mx.google.com ESMTP om2sm26921682pbc.30 - gsmtp 2013-08-10 22:47:01.230 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.231 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.232 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.233 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [1] EHLO Abhinavs-MacBook-Pro.local 2013-08-10 22:47:01.233 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.233 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.652 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.652 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [0] 250-mx.google.com at your service, [122.161.15.197] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN 250 ENHANCEDSTATUSCODES 2013-08-10 22:47:01.653 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.653 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.654 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.654 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [1] AUTH XOAUTH2 dXNlcj10eWxybW9iYWJAZ21haWwuY29tAWF1dGg9QmVhcmVyIHlhMjkuQUhFUzZaUkRMS1ZTNE5ORk1Hck5zendKWnlqZkhkUFk4QVZROWMzczRWWS1RTlUBAQ== 2013-08-10 22:47:01.654 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:01.656 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.280 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.280 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [0] 235 2.7.0 Accepted 2013-08-10 22:47:02.281 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.281 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.282 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.282 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [1] MAIL FROM:tylrmobab@gmail.com SIZE=52873 2013-08-10 22:47:02.282 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.283 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.566 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.566 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [0] 250 2.1.0 OK om2sm26921682pbc.30 - gsmtp 2013-08-10 22:47:02.567 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.567 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.568 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.569 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [1] DATA 2013-08-10 22:47:02.569 TylrApp[32042:1403] -TAMailFetcher _syncFlags:vanishedMessages:error: Deleting 'INBOX' : Mail : Re: RE: Image Attach 2013-08-10 22:47:02.569 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.570 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.571 TylrApp[32042:1403] -TAMailFetcher _syncFlags:vanishedMessages:error: Deleting 'INBOX' : Mail : Re: RE: Image Attach 2013-08-10 22:47:02.979 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.979 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [0] 503 5.5.1 RCPT first. om2sm26921682pbc.30 - gsmtp 2013-08-10 22:47:02.980 TylrApp[32042:7607] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.981 TylrApp[32042:7607] __43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke(0xc6f6e0) [-1] 2013-08-10 22:47:02.984 TylrApp[32042:a0b] 43+[TAOutboxItemManager _sendEmail:withData:]_block_invoke146(0xc6f6e0) IMAPOperation Thread: <NSThread: 0xd923110>{name = (null), num = 1} (lldb)— Reply to this email directly or view it on GitHub (https://github.com/MailCore/mailcore2/issues/298).
Here is minified code, I think it randomly fails when sending mails with attachments.
NSDictionary *data; // its dictionary having required message details
NSString *replyToMsgId = [data objectForKey:@"messageId"];
NSDictionary *metadata = [data objectForKey:@"emailMetadata"];
NSString *accountEmailAddress = [metadata objectForKey:@"accountEmailAddress"];
// load the mail being replied from Core Data
NSPredicate* predUidFolder = [NSPredicate predicateWithFormat:@"messageId == %@", replyToMsgId];
NSPredicate* predAccount = [TAMailUtil predicateForEmailAccount:accountEmailAddress];
NSManagedObjectContext *coreCtx = [TACoreUtil createCurrentThreadContext];
Mail *replyToMail = (Mail*)[TACoreUtil fetchSingleObjectForName:@"Mail"
withPredicate:[NSCompoundPredicate andPredicateWithSubpredicates:@[predAccount, predUidFolder]]
inContext:coreCtx];
MCOMessageBuilder * builder = [[MCOMessageBuilder alloc] init];
NSMutableArray *toAddresses = [NSMutableArray new];
NSMutableArray *ccAddresses = [NSMutableArray new];
if ([data objectForKey:@"reply"]) {
for (NSDictionary *currentAddress in [data objectForKey:@"replyTo"]){
MCOAddress *toAddress = [MCOAddress addressWithDisplayName:[currentAddress objectForKey:@"name"] mailbox:[currentAddress objectForKey:@"email"]];
[toAddresses addObject:toAddress];
}
if ([[data objectForKey:@"reply"] isEqualToString:@"replyAll"]) {
for (NSDictionary *currentAddress in [data objectForKey:@"cc"]){
MCOAddress *ccAddress = [MCOAddress addressWithDisplayName:[currentAddress objectForKey:@"name"] mailbox:[currentAddress objectForKey:@"email"]];
[ccAddresses addObject:ccAddress];
}
[[builder header] setCc:ccAddresses];
}
} else {
for (NSDictionary *currentAddress in [data objectForKey:@"toAddresses"]){
MCOAddress *toAddress = [MCOAddress addressWithDisplayName:[currentAddress objectForKey:@"name"] mailbox:[currentAddress objectForKey:@"email"]];
[toAddresses addObject:toAddress];
}
}
if (replyToMail) {
NSMutableArray *references = [NSMutableArray arrayWithObject:replyToMail.messageId];
if (replyToMail.references && replyToMail.references.length > 0) {
// add previous messageId references if any
NSArray* previousRefs = [replyToMail.references componentsSeparatedByString:TAMailReferencesSeperatorToken];
[references addObjectsFromArray:previousRefs];
}
[builder.header setReferences:references];
[builder.header setInReplyTo:@[replyToMsgId]];
}
[[builder header] setCc:toAddresses];
if (replyToMail) {
[builder.header setSubject:[NSString stringWithFormat:@"Re: %@", [data objectForKey:@"subject"]]];
} else {
[builder.header setSubject:[data objectForKey:@"subject"] ? [data objectForKey:@"subject"] : @""];
}
// Marlin: should use messageBody instead
[builder setHTMLBody:[data objectForKey:@"body"]];
// load atachments from core data
for (Content *contnt in [[self class] _loadAttachments:data managedObjectContext:coreCtx]) {
NSString *filePath = contnt.localFilePath;
NSString *contentType = @"application/octet-stream";
if (contnt.fileType) {
if ([contnt.fileType rangeOfString:@"text/" options:NSCaseInsensitiveSearch].location != NSNotFound
||
[contnt.fileType rangeOfString:@"application/json" options:NSCaseInsensitiveSearch].location != NSNotFound
) {
contentType = contnt.fileType;
}
}
NSString *fileName = contnt.title;
NSString *fileExt = [TAContentUtil fileExtensionForContent:contnt];
if (![fileName hasSuffix:fileExt]){
fileName = [NSString stringWithFormat:@"%@.%@", fileName, fileExt];
}
NSData *data = [NSData dataWithContentsOfFile:filePath];
MCOAttachment *attch = [MCOAttachment attachmentWithData:data filename:fileName];
[attch setMimeType:contentType];
[builder addAttachment:attch];
}
NSString *messageId = [TAMailUtil generateMessageIdForSender:accountEmailAddress messageBody:[data objectForKey:@"body"]];
// add message ID, so that the same email could be fetched back from server as required
[builder.header setMessageID:messageId];
// added from address
[[builder header] setFrom:[MCOAddress addressWithDisplayName:userDisplayName mailbox:emailAddress]];
MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init];
smtpSession.hostname = acc.osAddress;
smtpSession.port = 465 ;//acc.osPort;//change to 465 if doesn't works
smtpSession.username = acc.osUserName;
smtpSession.connectionType = MCOConnectionTypeTLS;//acc.osUseSSLToConnect ? MCOConnectionTypeTLS : MCOConnectionTypeClear;
if (mailAccType == TAMailAccountTypeGoogleOAuth) {
smtpSession.OAuth2Token = password;
smtpSession.authType = MCOAuthTypeXOAuth2;
} else {
smtpSession.password = password;
}
MCOSMTPSendOperation *sendOperation = [smtpSession sendOperationWithData:builder.data];
[sendOperation start:^(NSError *error) {
Is your recipient list empty?
Thanks @dinhviethoa ! that was correct, sorry for trouble.
This error comes randomly when sending email, I am using Gmail + XOauth2.
With connection logger, this line seems to be culprit : 503 5.5.1 RCPT first. om2sm26921682pbc.30 - gsmtp
Here are full logs for further reference