Как изменить имя отправителя в Python Gmail API? - PullRequest
0 голосов
/ 23 мая 2018

Я работаю над сценарием, который отправляет мне электронное письмо, когда я получаю новые оценки, бла-бла.Все работает отлично, за исключением того, что отправитель отображается в качестве моего электронного письма ...

from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from email.mime.text import MIMEText
import base64

def create_message(sender, to, subject, message_text):
    """Create a message for an email.
    Args:
        sender: Email address of the sender.
        to: Email address of the receiver.
        subject: The subject of the email message.
        message_text: The text of the email message.

    Returns:
        An object containing a base64url encoded email object.
    """
    message = MIMEText(message_text)
    message['to'] = to
    message['from'] = sender
    message['subject'] = subject
    return {'raw': base64.urlsafe_b64encode(message.as_string().encode("utf-8")).decode()}


def send_message(message):
    global service
    user_id = "me"
    """Send an email message.

    Args:
    service: Authorized Gmail API service instance.
    user_id: User's email address. The special value "me"
    can be used to indicate the authenticated user.
    message: Message to be sent.

    Returns:
    Sent Message.
    """
    try:
        message = (service.users().messages().send(userId=user_id, body=message).execute())
        return message
    except exception as error: # I am aware this line is broken, but it does goes through successfully so this does not execute
        print('An error occurred: %s' % error)


# Setup the Gmail API
SCOPES = 'https://www.googleapis.com/auth/gmail.send'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid or creds == "None":
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))

msg = create_message("fname lname", "to@email.com", '', content)
send_message(msg)

Это мой код для отправки сообщения, но мое письмо отображается в качестве отправителя, когда я отправляю сообщение ... Какя могу это исправить?

(я уже пытался установить отправителя как "John Smith" <from@email.com> и John Smith <from@email.com>)

1 Ответ

0 голосов
/ 03 декабря 2018

Используйте следующий код:

sender = 'John Smith <from@email.com>'
receiver = 'sample@email.com'
subject = 'Subject'
message_text = 'Example of message'

message = create_message(sender, receiver, subject, message_text)
...