Difference between revisions of "Mail"

From wiki
Jump to navigation Jump to search
Line 1: Line 1:
 +
[[Category:shell]]
 +
[[Category:python]]
 
==Sending mail with sendmail==
 
==Sending mail with sendmail==
 
;<code>sendmail -t < <messagefile></code>
 
;<code>sendmail -t < <messagefile></code>
Line 11: Line 13:
  
 
Python email sender found in [[https://docs.python.org/2/library/email-examples.html|the python docs]]
 
Python email sender found in [[https://docs.python.org/2/library/email-examples.html|the python docs]]
 +
 
<syntaxhighlight lang=python>
 
<syntaxhighlight lang=python>
 
import smtplib
 
import smtplib
Line 25: Line 28:
 
     mailsubject = 'What this is about'
 
     mailsubject = 'What this is about'
 
     mailtext = "Hi,\n\nI'd like to send you an email.\n\nBest Regards\n\nMe."
 
     mailtext = "Hi,\n\nI'd like to send you an email.\n\nBest Regards\n\nMe."
     sendmail(mailto,mailsubject,mailtext,attachment)
+
     #sendmail(mailto,mailfrom,mailsubject,mailtext,attachment)
 +
    sendmail(mailto, mailfrom=mailfrom, mailfrom=mailfrom, mailtext=mailtext, attachment=attachment)
 
     return
 
     return
 
+
 
+
def sendmail(mailto,mailsubject,mailtext,attachment):
+
def sendmail(mailto,mailfrom = '',mailsubject = '',mailtext = '',attachment = ''):
    filename = attachment.split('/')[-1]
 
 
     outer = MIMEMultipart()
 
     outer = MIMEMultipart()
 
     outer['Subject'] = mailsubject
 
     outer['Subject'] = mailsubject
 
     outer['To'] = mailto
 
     outer['To'] = mailto
 +
    if mailfrom != '':
 +
        outer['From'] = mailfrom
 
     msg = MIMEText(mailtext,_subtype='plain')
 
     msg = MIMEText(mailtext,_subtype='plain')
 
     outer.attach(msg)
 
     outer.attach(msg)
     ctype = 'application/octet-stream'
+
     if attachment != '':
    maintype, subtype = ctype.split('/', 1)
+
        filename = attachment.split('/')[-1]
    fp = open(attachment, 'rb')
+
        ctype = 'application/octet-stream'
    msg = MIMEBase(maintype, subtype)
+
        maintype, subtype = ctype.split('/', 1)
    msg.set_payload(fp.read())
+
        fp = open(attachment, 'rb')
    fp.close()
+
        msg = MIMEBase(maintype, subtype)
    # Encode the payload using Base64
+
        msg.set_payload(fp.read())
    encoders.encode_base64(msg)
+
        fp.close()
    # Set the filename parameter
+
        # Encode the payload using Base64
    msg.add_header('Content-Disposition', 'attachment', filename=filename)
+
        encoders.encode_base64(msg)
    outer.attach(msg)
+
        # Set the filename parameter
 +
        msg.add_header('Content-Disposition', 'attachment', filename=filename)
 +
        outer.attach(msg)
 
     composed = outer.as_string()
 
     composed = outer.as_string()
 
     s = smtplib.SMTP('localhost')
 
     s = smtplib.SMTP('localhost')
     s.sendmail('', mailto , composed)
+
     s.sendmail(mailfrom, mailto , composed)
 
     s.quit()
 
     s.quit()
 
     return
 
     return

Revision as of 22:07, 11 September 2018

Sending mail with sendmail

sendmail -t < <messagefile>
Send the email as in <messagefile>

The email headers are in <messagefile>. That should look like:

From: me@mydomain.tld
To: user@domain.tld
Subject: Subject of your mail
email text

Python email sender found in [python docs]

import smtplib
from email import encoders
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


def main():
    attachement = fileapath
    mailto = you@domain.tld
    mailsubject = 'What this is about'
    mailtext = "Hi,\n\nI'd like to send you an email.\n\nBest Regards\n\nMe."
    #sendmail(mailto,mailfrom,mailsubject,mailtext,attachment)
    sendmail(mailto, mailfrom=mailfrom, mailfrom=mailfrom, mailtext=mailtext, attachment=attachment)
    return
 
 
def sendmail(mailto,mailfrom = '',mailsubject = '',mailtext = '',attachment = ''):
    outer = MIMEMultipart()
    outer['Subject'] = mailsubject
    outer['To'] = mailto
    if mailfrom != '':
        outer['From'] = mailfrom
    msg = MIMEText(mailtext,_subtype='plain')
    outer.attach(msg)
    if attachment != '':
        filename = attachment.split('/')[-1]
        ctype = 'application/octet-stream'
        maintype, subtype = ctype.split('/', 1)
        fp = open(attachment, 'rb')
        msg = MIMEBase(maintype, subtype)
        msg.set_payload(fp.read())
        fp.close()
        # Encode the payload using Base64
        encoders.encode_base64(msg)
        # Set the filename parameter
        msg.add_header('Content-Disposition', 'attachment', filename=filename)
        outer.attach(msg)
    composed = outer.as_string()
    s = smtplib.SMTP('localhost')
    s.sendmail(mailfrom, mailto , composed)
    s.quit()
    return

main()