Gmail API를 사용하여 Python으로 이메일을 보내고 있지만 Python 3.4에서 작동하지 않는 것 같습니다. 여기 Gmail Api for Python이 잘못된 요청을 반환합니다.
코드입니다 :msg = MIMEText(html, 'html')
SCOPES = ['https://www.googleapis.com/auth/gmail.send']
username = '[email protected]'
CLIENT_SECRET_FILE = '/client_secret.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(CLIENT_SECRET_FILE, SCOPES)
try:
http_auth = credentials.authorize(Http())
service = discovery.build('gmail', 'v1', http=http_auth)
gmailMsg = {'raw': base64.urlsafe_b64encode(msg.as_string().encode('utf-8')).decode('utf-8')}
message = (service.users().messages().send(userId = username, body = gmailMsg).execute())
오류 :
기록을 위해<HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json returned "Bad Request">
, 내 프로젝트를 위해 만든 자격 증명이 아닌 UI 플랫폼 (서버 - 서버)에 대한 서비스 계정 인 . gmailMsg 객체가 올바르게 인코딩되지 않았을 수도 있습니다. 그러나 Google Apis Explorer에서이 도구를 사용하면 다음과 같이 추측 할 수 있습니다. 파이썬에서 볼 수있는 유일한 차이점은 JSON은 작은 따옴표를 사용하는 반면 Google API 익스플로러에서는 큰 따옴표를 사용하지 못하게했습니다.
누구나 어떤 추천이 있습니까?
P/s의 : 나는 인코딩 옵션 다음 시도했다 :
base64.urlsafe_b64encode(msg.as_string().encode('utf-8')).decode('utf-8')
base64.urlsafe_b64encode(msg.as_string().encode('utf-8')).decode('ascii')
base64.urlsafe_b64encode(msg.as_string().encode('ascii')).decode('ascii')
base64.urlsafe_b64encode(msg.as_bytes()).decode('utf-8')
base64.urlsafe_b64encode(msg.as_bytes()).decode('ascii')
base64.urlsafe_b64encode(msg.as_bytes()).decode()
편집 : 흥미롭게도, 내가 몸을 필요로하지 않는 레이블 API를 사용하려고 노력했다. 하지만 같은 오류가 발생했습니다. 유일한 변경 사항은 다음과 같습니다.