আমি কীভাবে পাইথন ব্যবহার করে কোনও ইমেলতে এইচটিএমএল সামগ্রী পাঠাতে পারি? আমি সাধারণ পাঠ্য পাঠাতে পারি।
আমি কীভাবে পাইথন ব্যবহার করে কোনও ইমেলতে এইচটিএমএল সামগ্রী পাঠাতে পারি? আমি সাধারণ পাঠ্য পাঠাতে পারি।
উত্তর:
থেকে 18.1.11 - পাইথন v2.7.14 ডকুমেন্টেশন। ইমেল: উদাহরণ :
বিকল্প প্লেইন পাঠ্য সংস্করণ সহ এইচটিএমএল বার্তা কীভাবে তৈরি করবেন তার একটি উদাহরণ এখানে রয়েছে:
#! /usr/bin/python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# me == my email address
# you == recipient's email address
me = "my@email.com"
you = "your@email.com"
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = me
msg['To'] = you
# Create the body of the message (a plain-text and an HTML version).
text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"
html = """\
<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.
</p>
</body>
</html>
"""
# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
msg.attach(part1)
msg.attach(part2)
# Send the message via local SMTP server.
s = smtplib.SMTP('localhost')
# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
s.sendmail(me, you, msg.as_string())
s.quit()
quit
s
# According to RFC 2046, the last part of a multipart message, in this case # the HTML message, is best and preferred.
আমি আশা করি আমি এটি
আপনি আমার মেলার মডিউলটি ব্যবহার করার চেষ্টা করতে পারেন ।
from mailer import Mailer
from mailer import Message
message = Message(From="me@example.com",
To="you@example.com")
message.Subject = "An HTML Email"
message.Html = """<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.</p>"""
sender = Mailer('smtp.example.com')
sender.send(message)
use_tls=True
, usr='email'
এবং pwd='password'
যখন আরম্ভ করা হয় Mailer
এবং এটি কাজ করবে।
message.Body = """Some text to show when the client cannot show HTML emails"""
এখানে গৃহীত উত্তরের একটি Gmail বাস্তবায়ন:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# me == my email address
# you == recipient's email address
me = "my@email.com"
you = "your@email.com"
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = me
msg['To'] = you
# Create the body of the message (a plain-text and an HTML version).
text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"
html = """\
<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.
</p>
</body>
</html>
"""
# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
msg.attach(part1)
msg.attach(part2)
# Send the message via local SMTP server.
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
mail.login('userName', 'password')
mail.sendmail(me, you, msg.as_string())
mail.quit()
এইচটিএমএল ইমেল প্রেরণের একটি সহজ উপায়, কেবলমাত্র পাঠ্য / এইচটিএমএল হিসাবে সামগ্রী-ধরণের শিরোনাম নির্দিষ্ট করে:
import email.message
import smtplib
msg = email.message.Message()
msg['Subject'] = 'foo'
msg['From'] = 'sender@test.com'
msg['To'] = 'recipient@test.com'
msg.add_header('Content-Type','text/html')
msg.set_payload('Body of <b>message</b>')
# Send the message via local SMTP server.
s = smtplib.SMTP('localhost')
s.starttls()
s.login(email_login,
email_passwd)
s.sendmail(msg['From'], [msg['To']], msg.as_string())
s.quit()
smtplib.SMTP()
উদাহরণের জন্য গৃহীত উত্তরকে উল্লেখ করতে পারে , যা tls ব্যবহার করে না। আমি এটি কাজের ক্ষেত্রে অভ্যন্তরীণ স্ক্রিপ্টের জন্য ব্যবহার করেছি যেখানে আমরা এসএমএসটিপি এবং একটি স্থানীয় মেলহাব ব্যবহার করি। এছাড়াও, এই উদাহরণটি অনুপস্থিত s.quit()
।
এখানে নমুনা কোড। পাইথন কুকবুক সাইটে পাওয়া কোড থেকে এটি অনুপ্রাণিত হয়েছে (সঠিক লিঙ্কটি খুঁজে পাচ্ছে না)
def createhtmlmail (html, text, subject, fromEmail):
"""Create a mime-message that will render HTML in popular
MUAs, text in better ones"""
import MimeWriter
import mimetools
import cStringIO
out = cStringIO.StringIO() # output buffer for our message
htmlin = cStringIO.StringIO(html)
txtin = cStringIO.StringIO(text)
writer = MimeWriter.MimeWriter(out)
#
# set up some basic headers... we put subject here
# because smtplib.sendmail expects it to be in the
# message body
#
writer.addheader("From", fromEmail)
writer.addheader("Subject", subject)
writer.addheader("MIME-Version", "1.0")
#
# start the multipart section of the message
# multipart/alternative seems to work better
# on some MUAs than multipart/mixed
#
writer.startmultipartbody("alternative")
writer.flushheaders()
#
# the plain text section
#
subpart = writer.nextpart()
subpart.addheader("Content-Transfer-Encoding", "quoted-printable")
pout = subpart.startbody("text/plain", [("charset", 'us-ascii')])
mimetools.encode(txtin, pout, 'quoted-printable')
txtin.close()
#
# start the html subpart of the message
#
subpart = writer.nextpart()
subpart.addheader("Content-Transfer-Encoding", "quoted-printable")
#
# returns us a file-ish object we can write to
#
pout = subpart.startbody("text/html", [("charset", 'us-ascii')])
mimetools.encode(htmlin, pout, 'quoted-printable')
htmlin.close()
#
# Now that we're done, close our writer and
# return the message body
#
writer.lastpart()
msg = out.getvalue()
out.close()
print msg
return msg
if __name__=="__main__":
import smtplib
html = 'html version'
text = 'TEST VERSION'
subject = "BACKUP REPORT"
message = createhtmlmail(html, text, subject, 'From Host <sender@host.com>')
server = smtplib.SMTP("smtp_server_address","smtp_port")
server.login('username', 'password')
server.sendmail('sender@host.com', 'target@otherhost.com', message)
server.quit()
পাইথন 3 এর জন্য, @ টালটম্যানের উত্তরের উন্নতি করুন :
email.message.EmailMessage
পরিবর্তে ব্যবহার করুন email.message.Message
।email.set_content
Func ব্যবহার করুন , subtype='html'
যুক্তি বরাদ্দ করুন । নিম্ন স্তরের ফানকের পরিবর্তে set_payload
এবং ম্যানুয়ালি শিরোনাম যুক্ত করুন।SMTP.send_message
ফানকের পরিবর্তে ফানক ব্যবহার করুন SMTP.sendmail
।with
অটো বন্ধ সংযোগ ব্লক ব্যবহার করুন ।from email.message import EmailMessage
from smtplib import SMTP
# construct email
email = EmailMessage()
email['Subject'] = 'foo'
email['From'] = 'sender@test.com'
email['To'] = 'recipient@test.com'
email.set_content('<font color="red">red color text</font>', subtype='html')
# Send the message via local SMTP server.
with smtplib.SMTP('localhost') as s:
s.login('foo_user', 'bar_password')
s.send_message(email)
আসলে, ইয়াগমেল কিছুটা ভিন্ন পন্থা নিয়েছিল।
এটি ডিফল্টরূপে অক্ষম ইমেল-পাঠকদের জন্য স্বয়ংক্রিয় ফ্যালব্যাক সহ এইচটিএমএল প্রেরণ করবে । এটি এখন 17 তম শতাব্দী নয়।
অবশ্যই, এটি ওভাররাইড করা যেতে পারে তবে এখানে যায়:
import yagmail
yag = yagmail.SMTP("me@example.com", "mypassword")
html_msg = """<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.</p>"""
yag.send("to@example.com", "the subject", html_msg)
ইনস্টলেশন নির্দেশাবলী এবং আরও অনেক দুর্দান্ত বৈশিষ্ট্যের জন্য, গিথুবটি দেখুন ।
smtplib
সিসি এবং বিসিসি বিকল্পগুলির সাথে পাইথন থেকে প্লেইন পাঠ্য এবং এইচটিএমএল ইমেল প্রেরণের একটি কার্যকারী উদাহরণ এখানে example
https://varunver.wordpress.com/2017/01/26/python-smtplib-send-plaintext-and-html-emails/
#!/usr/bin/env python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def send_mail(params, type_):
email_subject = params['email_subject']
email_from = "from_email@domain.com"
email_to = params['email_to']
email_cc = params.get('email_cc')
email_bcc = params.get('email_bcc')
email_body = params['email_body']
msg = MIMEMultipart('alternative')
msg['To'] = email_to
msg['CC'] = email_cc
msg['Subject'] = email_subject
mt_html = MIMEText(email_body, type_)
msg.attach(mt_html)
server = smtplib.SMTP('YOUR_MAIL_SERVER.DOMAIN.COM')
server.set_debuglevel(1)
toaddrs = [email_to] + [email_cc] + [email_bcc]
server.sendmail(email_from, toaddrs, msg.as_string())
server.quit()
# Calling the mailer functions
params = {
'email_to': 'to_email@domain.com',
'email_cc': 'cc_email@domain.com',
'email_bcc': 'bcc_email@domain.com',
'email_subject': 'Test message from python library',
'email_body': '<h1>Hello World</h1>'
}
for t in ['plain', 'html']:
send_mail(params, t)
বোটো 3 ব্যবহার করে এডাব্লুএস এর জন্য আমার উত্তরটি এখানে
subject = "Hello"
html = "<b>Hello Consumer</b>"
client = boto3.client('ses', region_name='us-east-1', aws_access_key_id="your_key",
aws_secret_access_key="your_secret")
client.send_email(
Source='ACME <do-not-reply@acme.com>',
Destination={'ToAddresses': [email]},
Message={
'Subject': {'Data': subject},
'Body': {
'Html': {'Data': html}
}
}
অফিস 365 এ সাংগঠনিক অ্যাকাউন্ট থেকে ইমেল প্রেরণের সহজ সমাধান:
from O365 import Message
html_template = """
<html>
<head>
<title></title>
</head>
<body>
{}
</body>
</html>
"""
final_html_data = html_template.format(df.to_html(index=False))
o365_auth = ('sender_username@company_email.com','Password')
m = Message(auth=o365_auth)
m.setRecipients('receiver_username@company_email.com')
m.setSubject('Weekly report')
m.setBodyHTML(final_html_data)
m.sendMessage()
এখানে ডিএফ একটি এইচটিএমএল সারণিতে রূপান্তরিত একটি ডেটা ফ্রেম যা html_template এ ইনজেকশন করা হচ্ছে