पायथन का उपयोग करके प्रदाता के रूप में जीमेल के साथ एक ईमेल कैसे भेजें?


289

मैं अजगर का उपयोग करके ईमेल (जीमेल) भेजने की कोशिश कर रहा हूं, लेकिन मुझे निम्नलिखित त्रुटि मिल रही है।

Traceback (most recent call last):  
File "emailSend.py", line 14, in <module>  
server.login(username,password)  
File "/usr/lib/python2.5/smtplib.py", line 554, in login  
raise SMTPException("SMTP AUTH extension not supported by server.")  
smtplib.SMTPException: SMTP AUTH extension not supported by server.

पायथन लिपि निम्नलिखित है।

import smtplib
fromaddr = 'user_me@gmail.com'
toaddrs  = 'user_you@gmail.com'
msg = 'Why,Oh why!'
username = 'user_me@gmail.com'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

16
इस प्रश्न को अब अनलॉक किया जाना चाहिए कि Google जीमेल के माध्यम से संदेश भेजने के लिए एक आंतरिक एपीआई की ओर बढ़ रहा है। यह कदम इन सभी उत्तरों में से एक को पुराना बनाता है, और एक प्रासंगिक उत्तर वास्तव में समस्या को हल करने पर बहुत हल्का है।
एंड्रयू

इसके अलावा, वीपीएन उपयोगकर्ताओं के लिए, यदि समस्या अभी भी बनी हुई है, तो अपना वीपीएन बंद करें। मेरे लिए यही काम किया।
पॉल

जवाबों:


211

आपको EHLOसीधे सीधे चलने से पहले कहना होगा STARTTLS:

server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()

इसके अलावा, आप वास्तव में बनाना चाहिए From:, To:और Subject:संदेश हेडर, एक रिक्त पंक्ति और उपयोग के द्वारा संदेश शरीर से अलग CRLFEOL मार्कर के रूप में।

उदाहरण के लिए

msg = "\r\n".join([
  "From: user_me@gmail.com",
  "To: user_you@gmail.com",
  "Subject: Just a message",
  "",
  "Why, oh why"
  ])

2
इनवॉइसिंग सर्वर.सेंडमेल (fromaddr, toaddrs, msg) दूसरा पैरामीटर, toaddrs की एक सूची, toaddrs = ['user_me@gmail.com'] होनी चाहिए
मैसिमो

14
अगस्त 2014 तक यह अब smtplib.SMTPAuthenticationError उठाता है: (534, '5.7.9 एप्लिकेशन-विशिष्ट पासवर्ड की आवश्यकता है।
anon58192932

7
हालांकि मेरे लिए, मुझे अजगर के माध्यम से ईमेल भेजने के लिए @google खाते का उपयोग करने के लिए एक 'ऐप' पासवर्ड को सक्षम करना पड़ा: support.google.com/accounts/answer/…
anon58192932

1
यहाँ पर कई लोगों को मेल करने का एक लिंक दिया गया है: stackoverflow.com/questions/8856117/…
anon58192932

1
मैंने एक बार टेलनेट द्वारा एसएमटीपी सर्वर में लॉग इन किया और EHLOटाइपो द्वारा भेजा । मैंने कई बार हेलो की कोशिश की लेकिन प्रतिक्रिया अलग थी। यह पता लगाने में घंटों लग गए कि ईएचएलओ वास्तव में एक कमांड है जिसे एसएमटीपी समझता है और मैंने टाइपो किया था।
शिप्लु मोकादिम

297
def send_email(user, pwd, recipient, subject, body):
    import smtplib

    FROM = user
    TO = recipient if isinstance(recipient, list) else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(user, pwd)
        server.sendmail(FROM, TO, message)
        server.close()
        print 'successfully sent the mail'
    except:
        print "failed to send mail"

यदि आप पोर्ट 465 का उपयोग करना चाहते हैं, तो आपको एक SMTP_SSLऑब्जेक्ट बनाना होगा :

# SMTP_SSL Example
server_ssl = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server_ssl.ehlo() # optional, called by login()
server_ssl.login(gmail_user, gmail_pwd)  
# ssl server doesn't support or need tls, so don't call server_ssl.starttls() 
server_ssl.sendmail(FROM, TO, message)
#server_ssl.quit()
server_ssl.close()
print 'successfully sent the mail'

2
बहुत अच्छा नमूना धन्यवाद। मुझे लगता है कि मैंने देखा है कि अगर मैं एक एसएसएल कनेक्शन का उपयोग करना चाहता हूं तो मुझे
सर्वर.स्टार्टटल

18
अब और दुर्भाग्य से काम नहीं करता है: smtplib.SMTPAuthenticationError: (534, '5.7.14 < accounts.google.com/... ... कृपया अपने वेब ब्राउज़र के माध्यम से लॉग इन करें और \ n5.7.14 तब पुन: प्रयास \ n5.7.14 जानें। अधिक से अधिक \ n5.7.14 support.google.com/mail/bin/answer.py?answer=78754 ... तब मुझे Google से एक मेल मिला, जिसमें एक संदिग्ध कनेक्शन का प्रयास किया गया है।
royskatt

13
@royskatt - आपको बस एक ऐप पासवर्ड बनाना है और इसे अपने अकाउंट पासवर्ड के बदले में उपयोग करना है। यहां एक ऐप पासवर्ड बनाएं: Security.google.com/settings/security/apppasswords
Jared

15
@royskatt: मुझे आपके द्वारा सामना किए जाने वाले मुद्दे के लिए सिर्फ एक फिक्स मिला। Google के पास कम सुरक्षित ऐप्स तक पहुंच की अनुमति देने के लिए एक सेटिंग है जिसे आपको इसे 'चालू' करना है। आप यहां से प्राप्त कर सकते हैं: Google -> मेरा खाता -> साइन-इन और सुरक्षा -> कनेक्ट किए गए एप्लिकेशन और साइटें -> नीचे स्क्रॉल करें और आपको 'कम सुरक्षित ऐप्स की अनुमति दें'
मिलेंगी

2
यदि आपका जीमेल टू-फैक्टर ऑथेंटिकेशन द्वारा सुरक्षित है, तो आपको सबसे पहले एक एप्लिकेशन विशिष्ट पासवर्ड उत्पन्न करना होगा -> फिर उपरोक्त उदाहरण कोड में उस एप्लिकेशन-पासवर्ड का उपयोग करें (यह बहुत महत्वपूर्ण है क्योंकि तब आप अपना पासवर्ड कहीं भी नहीं लिख रहे हैं क्लीयरटेक्स्ट में और आप किसी भी समय ऐप-पासवर्ड को रद्द कर सकते हैं)।
ट्रेवर बॉयड स्मिथ

136

मैं इसी तरह की समस्या में भाग गया और इस सवाल पर लड़खड़ा गया। मुझे एक SMTP प्रमाणीकरण त्रुटि मिली लेकिन मेरा उपयोगकर्ता नाम / पास सही था। यहाँ यह तय है। मैंने इसे पढ़ा:

https://support.google.com/accounts/answer/6010255

संक्षेप में, Google आपको smtplib के माध्यम से लॉग इन करने की अनुमति नहीं दे रहा है क्योंकि इसने इस तरह के लॉगिन को "कम सुरक्षित" के रूप में चिह्नित किया है, इसलिए आपको अपने Google खाते में लॉग इन करते समय इस लिंक पर जाना होगा। और पहुंच की अनुमति दें:

https://www.google.com/settings/security/lesssecureapps

एक बार जो सेट हो जाए (नीचे मेरा स्क्रीनशॉट देखें), यह काम करना चाहिए।

यहां छवि विवरण दर्ज करें

लॉगिन अब काम करता है:

smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login('me@gmail.com', 'me_pass')

परिवर्तन के बाद प्रतिक्रिया:

(235, '2.7.0 Accepted')

प्रतिक्रिया पूर्व:

smtplib.SMTPAuthenticationError: (535, '5.7.8 Username and Password not accepted. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 g66sm2224117qgf.37 - gsmtp')

अभी भी काम नहीं कर रहा है? यदि आप अभी भी SMTPAuthenticationError प्राप्त करते हैं, लेकिन अब कोड 534 है, तो इसका स्थान अज्ञात है। इस लिंक पर जाओ:

https://accounts.google.com/DisplayUnlockCaptcha

जारी रखें पर क्लिक करें और यह आपको अपना नया ऐप पंजीकृत करने के लिए 10 मिनट का समय देना चाहिए। तो अब एक और लॉगिन प्रयास करने के लिए आगे बढ़ें और यह काम करना चाहिए।

अद्यतन : यह ठीक से काम नहीं करता है आप smptlib में इस त्रुटि को प्राप्त करने में थोड़ी देर के लिए अटक सकते हैं:

235 == 'Authentication successful'
503 == 'Error: already authenticated'

संदेश कहता है कि साइन इन करने के लिए ब्राउज़र का उपयोग करें:

SMTPAuthenticationError: (534, '5.7.9 Please log in with your web browser and then try again. Learn more at\n5.7.9 https://support.google.com/mail/bin/answer.py?answer=78754 qo11sm4014232igb.17 - gsmtp')

'लेसरेसुरेप्स' को सक्षम करने के बाद, कॉफी के लिए जाएं, वापस आएं, और 'DisplayUnlockCaptcha' लिंक को फिर से आज़माएं। उपयोगकर्ता अनुभव से, किक को बदलने में एक घंटे तक का समय लग सकता है। फिर साइन-इन प्रक्रिया को फिर से आज़माएं।


3
हाँ धन्यवाद ! फ्लास्क-मेल का उपयोग करते समय हुआ
जियाननिस

1
धन्यवाद आदमी केवल मेरे लिए समस्या: खातों।
GoogleDisplayUnlockCaptcha

6
इसके अलावा, सेटिंग्स बदलने के लिए कृपया आधे घंटे से एक घंटे तक का समय छोड़ दें। मैंने एक नया खाता बनाया, सभी अतिरिक्त सुरक्षा को अक्षम किया, और अभी भी वही त्रुटि मिली। लगभग एक घंटे बाद, यह सब काम कर गया।
jkgeyti

2
यदि आपके पास "2-चरणीय सत्यापन" सक्षम है, तो कम सुरक्षित ऐप्स को सक्षम करना संभव नहीं है। सबसे अच्छा और सबसे सुरक्षित विकल्प "एपपासवर्ड" सुरक्षा को सक्षम करना है। पहले से ही सुझाए गए अनुसार सुरक्षा। Googlesettings/ security/ apppasswords , और यह एक आकर्षण की तरह काम करता है
Omiod

2
जब मैं apppasswords लिंक का अनुसरण करता हूं, तो मेरे सभी Google खातों को "आपके द्वारा देखी जा रही सेटिंग आपके खाते के लिए उपलब्ध नहीं है" त्रुटि मिलती है।
सुजैन

18

आप ओओपी के साथ नीचे?

#!/usr/bin/env python


import smtplib

class Gmail(object):
    def __init__(self, email, password):
        self.email = email
        self.password = password
        self.server = 'smtp.gmail.com'
        self.port = 587
        session = smtplib.SMTP(self.server, self.port)        
        session.ehlo()
        session.starttls()
        session.ehlo
        session.login(self.email, self.password)
        self.session = session

    def send_message(self, subject, body):
        ''' This must be removed '''
        headers = [
            "From: " + self.email,
            "Subject: " + subject,
            "To: " + self.email,
            "MIME-Version: 1.0",
           "Content-Type: text/html"]
        headers = "\r\n".join(headers)
        self.session.sendmail(
            self.email,
            self.email,
            headers + "\r\n\r\n" + body)


gm = Gmail('Your Email', 'Password')

gm.send_message('Subject', 'Message')

33
यदि आपकी कक्षा में केवल दो विधियाँ हैं, जिनमें से एक __init__ है, बस एक फ़ंक्शन का उपयोग करें।
19-2009 में जोईपीए

इस पद्धति का उपयोग करके आप कैसा लगाव जोड़ेंगे?
sgerbhctim

एक वर्ग का उपयोग करना अच्छा होगा यदि आप क्लाइंट को इनिट करना चाहते थे और इसे ईमेल और पासवर्ड के आसपास से गुजरने के बजाय कोड के अन्य भागों में भेजते थे। या यदि आप हर बार ईमेल और पासवर्ड में पास किए बिना कई संदेश भेजना चाहते हैं।
सामी स्टार्ट

15

यह काम

Gmail APP पासवर्ड बनाएं!

आप इसे बनाने के बाद फिर एक फाइल बनाएं sendgmail.py

फिर इस कोड को जोड़ें :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# =============================================================================
# Created By  : Jeromie Kirchoff
# Created Date: Mon Aug 02 17:46:00 PDT 2018
# =============================================================================
# Imports
# =============================================================================
import smtplib

# =============================================================================
# SET EMAIL LOGIN REQUIREMENTS
# =============================================================================
gmail_user = 'THEFROM@gmail.com'
gmail_app_password = 'YOUR-GOOGLE-APPLICATION-PASSWORD!!!!'

# =============================================================================
# SET THE INFO ABOUT THE SAID EMAIL
# =============================================================================
sent_from = gmail_user
sent_to = ['THE-TO@gmail.com', 'THE-TO@gmail.com']
sent_subject = "Where are all my Robot Women at?"
sent_body = ("Hey, what's up? friend!\n\n"
             "I hope you have been well!\n"
             "\n"
             "Cheers,\n"
             "Jay\n")

email_text = """\
From: %s
To: %s
Subject: %s

%s
""" % (sent_from, ", ".join(sent_to), sent_subject, sent_body)

# =============================================================================
# SEND EMAIL OR DIE TRYING!!!
# Details: http://www.samlogic.net/articles/smtp-commands-reference.htm
# =============================================================================

try:
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    server.ehlo()
    server.login(gmail_user, gmail_app_password)
    server.sendmail(sent_from, sent_to, email_text)
    server.close()

    print('Email sent!')
except Exception as exception:
    print("Error: %s!\n\n" % exception)

इसलिए, यदि आप सफल हैं, तो इस तरह की छवि देखेंगे:

मैंने खुद से और एक ईमेल भेजकर परीक्षण किया।

सफल ईमेल भेजा गया।

नोट: मेरे पास मेरे खाते पर 2-चरणीय सत्यापन सक्षम है। ऐप पासवर्ड इसके साथ काम करता है! (gmail smtp सेटअप के लिए, आपको https://support.google.com/accounts/answer/185833?hl=en पर जाना होगा और नीचे दिए गए चरणों का पालन करना होगा )

यह सेटिंग 2-चरणीय सत्यापन सक्षम खातों के लिए उपलब्ध नहीं है। ऐसे खातों को कम सुरक्षित ऐप्स एक्सेस के लिए एप्लिकेशन-विशिष्ट पासवर्ड की आवश्यकता होती है।

कम सुरक्षित ऐप एक्सेस ... यह सेटिंग 2-चरणीय सत्यापन सक्षम खातों के लिए उपलब्ध नहीं है।


1
शानदार समाधान और कोड में बहुत अच्छी तरह से समझाया गया है। धन्यवाद जय, बहुत सराहना की। गूंगा प्रश्न: क्या आप जानते हैं कि प्रति दिन ईमेल की अधिकतम सीमा (जीमेल के साथ) भेजी जा सकती है?
एंजेलो

धन्यवाद @Angelo लेकिन हाँ एक सीमा है, GMail = 500 ईमेल या 500 प्राप्तकर्ता / दिवस रेफरी: support.google.com/mail/answer/22839 G SUITE अलग है और 2000 संदेश / दिन है और यहाँ पाया जा सकता है: समर्थन .google.com / a / answer / 166852 गुड लक!
JayRizzo

2
अन्य सभी पुराने पद हैं और काम नहीं कर रहे हैं, लेकिन यह 100% काम कर रहा है। ऐप पासवर्ड जनरेट करें। जवाब के लिए धन्यवाद
शुभ

1
मैं थोड़ा हैरान हूं कि इस समाधान में अधिक वृद्धि नहीं है। मैंने अन्य सभी की कोशिश नहीं की है , लेकिन मैंने कई कोशिश की है, और केवल एक ने ही बॉक्स से बाहर काम किया है, जिसमें 0 छेड़छाड़ है।
mcouthon

14

आप इसे यहां देख सकते हैं: http://jayrambhia.com/blog/send-emails-use-python

smtp_host = 'smtp.gmail.com'
smtp_port = 587
server = smtplib.SMTP()
server.connect(smtp_host,smtp_port)
server.ehlo()
server.starttls()
server.login(user,passw)
fromaddr = raw_input('Send mail by the name of: ')
tolist = raw_input('To: ').split()
sub = raw_input('Subject: ')

msg = email.MIMEMultipart.MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = email.Utils.COMMASPACE.join(tolist)
msg['Subject'] = sub  
msg.attach(MIMEText(raw_input('Body: ')))
msg.attach(MIMEText('\nsent via python', 'plain'))
server.sendmail(user,tolist,msg.as_string())

2
प्लस 1 क्योंकि अपने स्वयं के प्रारूप स्ट्रिंग को हार्डकोड करने की तुलना में माइम का निर्माण करना बेहतर है। एक सरल पाठ संदेश के लिए MIMEMultipart आवश्यक है? या निम्नलिखित भी सही है: stackoverflow.com/a/6270987/895245
Ciro Santilli 病 correct correct correct ''

आप ईमेल वैरिएबल को तुरंत कहाँ भेजते हैं?
6

11

सीधे संबंधित नहीं है लेकिन फिर भी यह इंगित करने योग्य है कि मेरा पैकेज gmail संदेश भेजने की कोशिश करता है जो वास्तव में त्वरित और पीड़ारहित है। यह त्रुटियों की एक सूची को बनाए रखने की भी कोशिश करता है और तुरंत समाधान की ओर इशारा करता है।

यह वास्तव में केवल इस कोड की जरूरत है कि आपने क्या लिखा है:

import yagmail
yag = yagmail.SMTP('user_me@gmail.com')
yag.send('user_you@gmail.com', 'Why,Oh why!')

या एक लाइनर:

yagmail.SMTP('user_me@gmail.com').send('user_you@gmail.com', 'Why,Oh why!')

पैकेज / इंस्टॉलेशन के लिए कृपया पाइट 2 और 3 दोनों के लिए उपलब्ध गिट या पाइप को देखें


9

यहाँ एक जीमेल एपीआई उदाहरण है। हालांकि अधिक जटिल, यह एकमात्र तरीका है जो मैंने पाया कि 2019 में काम करता है। यह उदाहरण लिया गया और इससे संशोधित किया गया:

https://developers.google.com/gmail/api/guides/sending

आपको अपनी वेबसाइट के माध्यम से Google के एपीआई इंटरफेस के साथ एक प्रोजेक्ट बनाने की आवश्यकता होगी। इसके बाद आपको अपने ऐप के लिए GMAIL API सक्षम करना होगा। क्रेडेंशियल बनाएं और फिर उन क्रेडेंशियल को डाउनलोड करें, इसे क्रेडेंशियलजोन के रूप में सहेजें।

import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

from email.mime.text import MIMEText
import base64

#pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/gmail.send']

def create_message(sender, to, subject, msg):
    message = MIMEText(msg)
    message['to'] = to
    message['from'] = sender
    message['subject'] = subject

    # Base 64 encode
    b64_bytes = base64.urlsafe_b64encode(message.as_bytes())
    b64_string = b64_bytes.decode()
    return {'raw': b64_string}
    #return {'raw': base64.urlsafe_b64encode(message.as_string())}

def send_message(service, user_id, message):
    #try:
    message = (service.users().messages().send(userId=user_id, body=message).execute())
    print( 'Message Id: %s' % message['id'] )
    return message
    #except errors.HttpError, error:print( 'An error occurred: %s' % error )

def main():
    """Shows basic usage of the Gmail API.
    Lists the user's Gmail labels.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    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.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('gmail', 'v1', credentials=creds)

    # Example read operation
    results = service.users().labels().list(userId='me').execute()
    labels = results.get('labels', [])

    if not labels:
        print('No labels found.')
    else:
        print('Labels:')
    for label in labels:
        print(label['name'])

    # Example write
    msg = create_message("from@gmail.com", "to@gmail.com", "Subject", "Msg")
    send_message( service, 'me', msg)

if __name__ == '__main__':
    main()

smtplib पूरी तरह से थ्रेड-सुरक्षित नहीं है, इसलिए इसमें समवर्ती संदेश भेजने वाले मुद्दे होंगे। यह सही तरीका है।
dsbajna

2

अब एक जीमेल एपीआई है, जो आपको ईमेल भेजने, ईमेल पढ़ने और REST के माध्यम से ड्राफ्ट बनाने की सुविधा देता है। SMTP कॉल्स के विपरीत, यह नॉन-ब्लॉकिंग है जो थ्रेड-आधारित वेबसर्वर्स के लिए रिक्वेस्ट थ्रेड में ईमेल भेजना (जैसे कि पायथन वेब्सर्वर्स) के लिए एक अच्छी बात हो सकती है। एपीआई भी काफी शक्तिशाली है।

  • बेशक, ईमेल को एक गैर-वेबसर्वर कतार से हटा दिया जाना चाहिए, लेकिन विकल्प होना अच्छा है।

यदि आपके पास डोमेन पर Google Apps व्यवस्थापक अधिकार है, तो इसे सेटअप करना सबसे आसान है, क्योंकि तब आप अपने क्लाइंट को कंबल की अनुमति दे सकते हैं। अन्यथा आपको OAuth प्रमाणीकरण और अनुमति के साथ फिडेल करना होगा।

यहाँ यह प्रदर्शित करने वाला एक जिस्म है:

https://gist.github.com/timrichardson/1154e29174926e462b7a


2

@David से शानदार जवाब, यहां पायनियर 3 के लिए जेनेरिक कोशिश के अलावा है:

def send_email(user, password, recipient, subject, body):

    gmail_user = user
    gmail_pwd = password
    FROM = user
    TO = recipient if type(recipient) is list else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

    server = smtplib.SMTP("smtp.gmail.com", 587)
    server.ehlo()
    server.starttls()
    server.login(gmail_user, gmail_pwd)
    server.sendmail(FROM, TO, message)
    server.close()

2

अपने जीमेल खाते पर कम सुरक्षित ऐप्स सक्षम करें और उपयोग करें (पायथन> = 3.6):

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

gmailUser = 'XXXXX@gmail.com'
gmailPassword = 'XXXXX'
recipient = 'XXXXX@gmail.com'

message = f"""
Type your message here...
"""

msg = MIMEMultipart()
msg['From'] = f'"Your Name" <{gmailUser}>'
msg['To'] = recipient
msg['Subject'] = "Subject here..."
msg.attach(MIMEText(message))

try:
    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(gmailUser, gmailPassword)
    mailServer.sendmail(gmailUser, recipient, msg.as_string())
    mailServer.close()
    print ('Email sent!')
except:
    print ('Something went wrong...')

1
वाकई शानदार जवाब। सबसे अच्छा एक गुच्छा, सुपर संक्षिप्त। धन्यवाद।
ब्रूस डीन

धन्यवाद पेड्रो, आपके उत्तर ने इसे हल कर दिया। कई उपनाम के साथ Gsuite का उपयोग कर किसी के लिए Btw; बस अपने जीमेल खाते में उपनाम जोड़ने निम्नलिखित support.google.com/mail/answer/22370?hl=en और आप की जगह अन्य नाम का उपयोग भेज सकते हैं <{gmailUser}>के साथ <YourAlias>
ल्यूकस्पैन

1

पुराने की समस्या की तरह लगता है smtplib। में python2.7सब कुछ ठीक काम करता है।

अद्यतन : हां, server.ehlo()यह भी मदद कर सकता है।


-1
    import smtplib

    fromadd='from@gmail.com'
    toadd='send@gmail.com'

    msg='''hi,how r u'''
    username='abc@gmail.com'
    passwd='password'

    try:
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.ehlo()
        server.starttls()
        server.login(username,passwd)

        server.sendmail(fromadd,toadd,msg)
        print("Mail Send Successfully")
        server.quit()

   except:
        print("Error:unable to send mail")

   NOTE:https://www.google.com/settings/security/lesssecureapps that                                                         should be enabled

मैं सरल कोड पोस्ट कर रहा हूं जो जीमेल अकाउंट से मेल भेजने का काम करेगा। अगर आपको कोई जानकारी चाहिए तो मुझे बताएं। मुझे उम्मीद है कि कोड सभी उपयोगकर्ताओं को मदद करेगा।
श्याम गुप्त

-2
import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login("fromaddress", "password")
msg = "HI!"
server.sendmail("fromaddress", "receiveraddress", msg)
server.quit()

अजगर कोड का उपयोग कर जीमेल के माध्यम से एक मेल भेजने के लिए सरल कोड। पते से आपका gmailID है और रिसीवरड्रेस्रेस मेल आईडी है जो आपको मेल भेजती है।
सैम दिव्या कुमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.