Я настроил свой клиент Gmail на использование официального домена компании с использованием SMTP Google для отправки электронных писем вручную. Это работает просто великолепно, и я использую его уже более 1 года.
Теперь мне нужно отправлять электронные письма и программно, поэтому я пытаюсь заставить GmailAPI работать так же.
Я могу создавать черновики, извлекать ярлыки и отправлять черновики и сообщения напрямую, не создавая черновик. Однако при отправке я сталкиваюсь с некоторыми проблемами: электронное письмо отображается как отправленное в клиенте Gmail, но фактически не доставляется в папку «Входящие» получателя (или папку со спамом)
Догадка 1. Электронное письмо отправляется, но помечено как фишинговое, поэтому отбрасывается в папке "Входящие" получателя.
Предположение 2. API Gmail на самом деле не отправляет электронное письмо, а просто помещает его в папку «Отправленные». , например добавление тега "ОТПРАВЛЕНО" к электронному письму.
Предчувствие 3: Вероятно, необходимо опубликовать приложение (прямо сейчас в режиме тестирования), чтобы иметь возможность отправлять электронное письмо.< /p>
Похоже, что предчувствие 1 наиболее вероятно, потому что, когда я сравнивал исходный код электронного письма при отправке электронных писем вручную и программно, я заметил, что этот заголовок добавляется к электронному письму.
Received: from 814388093175 named unknown by with HTTPREST; Thu, 27 Jun 2024 01:16:36 -0400gmailapi.google.com
Это, скорее всего, говорит о том, что источник неизвестен, поэтому почтовый ящик получателя удаляет это письмо и никогда не показывает его во входящих.
Если это так случае, какое решение?
Код для воспроизведения:
import base64
from email.message import EmailMessage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import html2text
import os
from google.cloud import translate
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
def create_general_message(username, to_email, from_email):
message = EmailMessage()
message['Subject'] = f'Namaste {username}'
message['From'] = from_email
message['To'] = to_email
message.set_content('Menu')
with open('Email Code.html', 'r') as file:
html = file.read()
text = html2text.html2text(html)
print(message)
# according to RFC2046 the last part is preferred
# message.attach(MIMEText(html, 'html'))
return {"raw": base64.urlsafe_b64encode(message.as_bytes()).decode()}
def main():
creds = None
SCOPES = ["https://www.googleapis.com/auth/gmail.m ... il.compose", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.metadata", "https://www.googleapis.com/auth/gmail.insert", "https://www.googleapis.com/auth/gmail.settings.basic", "https://mail.google.com/"]
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
"credentials.json", SCOPES
)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open("token.json", "w") as token:
token.write(creds.to_json())
try:
# Call the Gmail API
service = build("gmail", "v1", credentials=creds)
service.users()
create_message = create_general_message('Devansh Garg', 'devstep11@gmali.com', 'info@mycompanydomain.in')
send_message = (
service.users()
.messages()
.send(userId="me", body=create_message)
.execute()
)
print(f'Message Id: {send_message["id"]}')
print(create_message)
service.close()
except HttpError as error:
print(f"An error occurred: {error}")
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/786 ... -gmail-api
Необходимо отправлять электронные письма программно с помощью Gmail API. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Невозможно отправлять электронные письма на адреса Gmail с помощью phpmailer
Anonymous » » в форуме Php - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-