`

发送邮件

 
阅读更多

1.使用smtplib

 

#encoding=utf-8
import smtplib

hostname = "smtp.ym.163.com"
port = 25
user = "admin@tim4lover.com"
password = "your password"

def sendEmail(content,toaddrs):
    msg = "From: %s\r\nTo: %s\r\n\r\n" % (user, ", ".join(toaddrs))
    msg += content
    server = smtplib.SMTP(hostname,port)
    server.login(user,password)
    server.sendmail(user,toaddrs,msg)
    server.quit()

if __name__ == '__main__':
    content = "Hello,I'm Tim.Thank your supports!"
    toaddrs = ["191996155@qq.com","tim4lover@163.com",]
    sendEmail(content,toaddrs)
 

 

smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])

SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接我们可以向smtp服务器发送指令,执行相关操作(如:登陆、发送邮件)。

 

SMTP.connect([host[, port]])

连接到指定的smtp服务器。参数分别表示smpt主机和端口。

 

SMTP.login(user, password)

登陆到smtp服务器。

 

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

发送邮件。

 

SMTP.quit()

断开服务器连接。

 

邮件内容必须遵循smtp协议,包括发件人、收件人、标题、内容、附件等。例子中的msg就是这么构造的,如果邮件比较复杂,就需要用到email模块。

 

2.使用email及子模块

 

 

# -*- coding: utf-8 -*-

import os
import smtplib
import mimetypes
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEAudio import MIMEAudio
from email.MIMEImage import MIMEImage
from email.Encoders import encode_base64

def sendMail(subject, text, *attachmentFilePaths):
    gmailUser = 'mine@gmail.com'
    gmailPassword = '******'
    recipient = 'to@gmail.com'

    msg = MIMEMultipart()
    msg['From'] = gmailUser
    msg['To'] = recipient
    msg['Subject'] = subject
    msg.attach(MIMEText(text))

    for attachmentFilePath in attachmentFilePaths:
        msg.attach(getAttachment(attachmentFilePath))

    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('Sent email to %s' % recipient)

def getAttachment(attachmentFilePath):
    contentType, encoding = mimetypes.guess_type(attachmentFilePath)

    if contentType is None or encoding is not None:
        contentType = 'application/octet-stream'

    mainType, subType = contentType.split('/', 1)
    file = open(attachmentFilePath, 'rb')

    if mainType == 'text':
        attachment = MIMEText(file.read())
    elif mainType == 'message':
        attachment = email.message_from_file(file)
    elif mainType == 'image':
        attachment = MIMEImage(file.read(),_subType=subType)
    elif mainType == 'audio':
        attachment = MIMEAudio(file.read(),_subType=subType)
    else:
        attachment = MIMEBase(mainType, subType)
    attachment.set_payload(file.read())
    encode_base64(attachment)

    file.close()

    attachment.add_header('Content-Disposition', 'attachment',   filename=os.path.basename(attachmentFilePath))
    return attachment


# start to test
sendMail('here is a subject', 'Send a email with Gmail','C:\AppServ\www\python\wx.zip')
分享到:
评论

相关推荐

    使用JAVAMail代发邮件

    这个类称为 MailInfo,包含了邮件的各种信息,例如邮件服务器的主机名和端口号、邮件发送者的地址、邮件接收者的地址、邮件主题、邮件内容、邮件附件等。 在 MailInfo 类中,我们定义了多个成员变量,用于存储邮件...

    实现网页发邮件

    在IT领域,网页发邮件是一种常见的功能,它允许用户通过浏览器界面发送电子邮件,而无需借助桌面邮件客户端。本文将深入探讨如何使用HTML实现这一功能,以及相关的关键技术点。 首先,我们要理解HTML(HyperText ...

    在线发邮件 -您只需输入发送邮件的地址、标题和正文即可发送邮件

    在线发邮件系统是一种便捷的工具,它允许用户无需登录邮箱客户端或网页版邮箱,直接通过输入必要的信息(发送邮件的地址、标题和正文)来发送邮件。这种系统通常基于Web技术构建,为用户提供了一个简洁的界面,使得...

    在Qt中发送邮件的库。

    发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件的库发送邮件...

    多线程发邮件

    本示例“多线程发邮件”就是利用了这一特性,通过并发执行多个邮件发送任务,来加快邮件的发送速度。下面我们将深入探讨相关知识点。 首先,多线程是指在一个进程中同时执行多个线程,这些线程可以共享同一块内存...

    BO自动发邮件配置指导

    ### SAP BO 自动发邮件配置指导 #### 一、引言 在企业级应用中,自动化工具能够极大地提高工作效率并减少人为错误。SAP BusinessObjects(简称BO)提供了强大的数据分析和报告工具,其中包括了自动发送电子邮件的...

    foxmail发邮件箱内无显示

    ### Foxmail已发邮件无显示问题解析与解决方法 #### 一、问题概述 在使用Foxmail客户端发送邮件的过程中,可能会遇到一个较为常见的问题:已发送的邮件在“已发送”文件夹中无法正常显示出来。这不仅影响了用户的...

    服务器无法发邮件的问题彻底解决了

    本文将详细介绍如何在服务器已经屏蔽了所有发邮件函数的情况下,依然能够成功发送邮件的方法。 #### 一、问题背景与分析 当一个网站或应用无法正常发送邮件时,这往往会给业务带来较大的影响,例如用户注册验证、...

    VBA:借助jmail控件一键发送邮件

    提供的文件“Jmail发邮件--成功.xls”可能是包含VBA代码的示例Excel工作簿,其中包含了完整的邮件发送功能。你可以打开这个文件,查看并学习如何将上述代码整合进实际的VBA项目中。 总的来说,利用VBA和Jmail控件,...

    .net465端口发送邮件

    .net 465端口发送邮件,开发过程中,经常会使用到发送邮件功能,而我们在使用阿里云服务器发送邮件时,由于安全原因,阿里云禁用掉了25端口,于是就造成了我们在本地使用25端口发送邮件时是好的,一放到服务器上就...

    PB发送邮件开发代码

    总之,使用PowerBuilder结合jmail库发送邮件是一项常见的任务,通过理解PowerBuilder的ActiveX集成和邮件发送协议,开发者可以创建出功能完备的邮件发送功能。同时,对于特定的邮件服务商,如QQ邮箱,需要了解其SMTP...

    perl自动发邮件

    标题"perl自动发邮件"表明我们要讨论如何利用Perl编写脚本来创建一个自动发送邮件的程序。Perl提供了多个模块来处理电子邮件的发送,其中最常用的是`Email::Sender`系列模块,如`Email::Sender::Simple`用于基础的...

    SAP 发送邮件 详细步骤

    - SAP中的发件人邮箱设置有两种方式:一种是在`SCOT`中直接设置“DefaultDomain”,另一种则是在需要发送邮件的用户的“远程邮件”栏中填写发件人的邮箱地址。 - 根据实际情况选择适合的方式进行设置。 ##### 6. ...

    匿名发送邮件软件(可批量发送)

    这通常通过使用特定的邮件服务或软件实现,这些工具可以隐藏发件人的IP地址和电子邮件地址。匿名发送邮件的主要目的是保护隐私,避免垃圾邮件过滤器,或者在进行敏感通信时提供额外的安全层。然而,值得注意的是,...

    C#自动发送邮件

    在发送邮件前,我们需要定义发件人(`MailAddress`)和收件人(`MailAddress`)。 ```csharp MailAddress from = new MailAddress(listPara[0].Replace("\r", "").Trim(), ""); // 发件人邮箱地址 MailAddress to = ...

    java发邮件 java发email

    4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...

    通过excel配置自动发送邮件

    SMTP是互联网标准,用于从发件人邮件服务器传输邮件到收件人邮件服务器。邮件发送.exe可能就是实现SMTP通信的程序,它连接到SMTP服务器,根据Excel中的数据发送邮件。 ICSharpCode.SharpZipLib是一个.NET的压缩库,...

    网站用户注册成功后自动发送邮件

    例如,使用PHPMailer,我们首先需要下载并引入库文件,然后设置SMTP服务器信息,创建邮件对象,设置发件人、收件人、主题和内容,最后调用发送方法。 ```php require 'PHPMailer/PHPMailerAutoload.php'; $mail =...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

Global site tag (gtag.js) - Google Analytics