MailCore2 с Gmail и OAuth2 отправляет ТОЛЬКО с полной областью доступа, т.е. https://mail.google.com - PullRequest
0 голосов
/ 08 июля 2019

Мое приложение отправляет электронные письма через Gmail, используя Mailcore2.Для этого я тоже использую аутентификацию OAuth2.Это прекрасно работает, если выбран полный доступ: https://mail.google.com

Однако Google предложил использовать другие области (отправить).Я пытаюсь https://www.googleapis.com/auth/gmail.send и / или https://www.googleapis.com/auth/gmail.compose

Mailcore2 не отправляет с этими областями возврата:

MCOSMTPResponseCodeKey=535, NSLocalizedDescription=Unable to authenticate with the current session's credentials., MCOSMTPResponseKey=5.7.8 Username and Password not accepted.

Нужна ли MailCore2 область полного доступа?Есть обходные пути?

вот моя отправка с кодом MailCore2, который работает только с полной областью:

MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init];
smtpSession.hostname = @"smtp.gmail.com";
smtpSession.port = 465;

[smtpSession setAuthType:MCOAuthTypeXOAuth2];
[smtpSession setOAuth2Token:delAuthAccessToken];//from oauth2
[smtpSession setUsername:delAuthUserEmail];

smtpSession.authType =MCOAuthTypeXOAuth2;
smtpSession.connectionType=MCOConnectionTypeTLS;

MCOMessageBuilder *builder = [[MCOMessageBuilder alloc] init];
NSMutableArray *to = [[NSMutableArray alloc] init];
[to addObject:[MCOAddress addressWithDisplayName:delSendName mailbox:delSendEmail]];
MCOAddress *from = [MCOAddress addressWithDisplayName:delAuthUserEmail mailbox:delAuthUserEmail];

[[builder header] setFrom:from];
[[builder header] setTo:to];
[[builder header] setSubject:@"Sent By MyApp"];
[builder setTextBody:delMessage];
NSData * rfc822Data = [builder data];

MCOSMTPSendOperation *sendOperation =[smtpSession sendOperationWithData:rfc822Data];

[sendOperation start:^(NSError *error) {
    if(error) {
        NSLog(@"Error sending email: %@", error);

    } else {
        NSLog(@"Message sent sucessfully.");
    }
}];

1 Ответ

0 голосов
/ 09 июля 2019

Область Gmail https://www.googleapis.com/auth/gmail.send идеально подходит для отправки сообщений электронной почты с помощью Gmail API с вашего собственного адреса электронной почты. Однако, если вы планируете отправлять электронную почту с псевдонимом, вам нужно добавить ограниченную область действия в ваш проект.

https://www.googleapis.com/auth/gmail.settings.basic

Область действия gmail.settings.basic позволяет отправлять электронные письма с псевдонимов, подключенных к учетной записи Gmail аутентифицированного пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...