精华内容
下载资源
问答
  • python发邮件详解,smtplib和email模块详解

    万次阅读 多人点赞 2018-09-06 18:20:56
    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理。SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它...

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理。SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式,python实现发邮件也是基于此基础上进行封装的。

    1.python发邮件所需要的基础包

    python发送邮件需要用到python自带的两个模块,smtplib和email。直接import导入,无需下载。
    python的smtplib提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装。

    2.smtplib的用法

    smtplib用法相对来说很简单,就是分为两步。

    • 创建SMTP的操作对象并连接smtp目标服务器,可以是163、QQ等
    • 根据自己的账号登录目标服务器(自己的邮箱地址和邮箱授权码)
    • 调用对象中的方法,发送邮件到目标地址

    python与smtp服务器之间的具体交互的通用代码:

    import smtplib
    server = smtplib.SMTP(mailserver, port)  # 发件人邮箱中的SMTP服务器,端口是25
    server.login(sender, passwd)  # 发件人邮箱账号、邮箱授权码
    # msg.as_string()中as_string()是将msg(MIMEText或MIMEMultipart对象)变为str。
    server.sendmail(sender, receive, msg.as_string())  
    server.quit()

    具体的python连接目标服务器的代码如下:注:本文章用的是qq的smtp服务器。
    常用邮箱的smtp服务器地址:
    新浪邮箱:smtp.sina.com,搜狐邮箱:smtp.sohu.com,qq邮箱:smtp.qq.com

    sender_maile='80617252@qq.com' # 发送方的邮箱地址
    sender_pass = 'lsjdfsljdfk' # 邮箱提供的授权码,可在第三方登录,我这个是随便打的。
    sftp_obj =smtplib.SMTP('smtp.qq.com', 25)
    sftp_obj.login(sender_mail, sender_pass)
    #三个参数分别是:发件人邮箱账号,收件人邮箱账号,发送的邮件体
    sftp_obj.sendmail(sender_mail, receiver_mail, msg_root.as_string())
    sftp_obj.quit()
    3.email模块的详细理解和使用

    email模块下的mime模块下有常用的三个模块,三个模块中有三个大类。其实就是下边这三个了,说的很绕,下边为导入方式,一目了然。

    from email.mime.text import MIMEText    
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart    

    简单说下他们的关系,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片对象,要把多个对象组合起来,就用MIMEMultipart对象,他代表的是整个邮件。这样说应该还不是很清晰,下边就分开来说,最后会总的总结,在最后边就是完整的代码(可以发送一切内容的代码)。

    A.MIMEText对象中有三个需要我们设置的参数,一个是正文内容,一个是正文内容的类型,例如:”text/plain”和”text/html”,一个是正文内容的编码。

    构造普通文本:

    text_info = 'hello world '
    text_sub = MIMEText(text_info,'plain', 'utf-8')  

    构造超文本:

    url = "https://blog.csdn.net/chinesepython"
    html_info = """
        <p>点击以下链接,你会去向一个更大的世界</p>
        <p><a href="%s">click me</a></p>
        <p>i am very glasses for you</p>
        """ % url
    html_sub = MIMEText(html_info, 'html', 'utf-8')  
    # 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
    html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"'

    构造base64数据流,用于发送文件的时候使用,构造附件代码:

    txt_file = open(r'D:\python_files\files\hello_world.txt', 'rb').read()
    txt = MIMEText(txt_file, 'base64', 'utf-8')
    txt["Content-Type"] = 'application/octet-stream'
    # 命名发送的附件
    txt.add_header('Content-Disposition', 'attachment', filename='hello_world.txt')
    B.MIMEImage对象中只需要把读取的文件传入就行

    构造图片:

    image_file = open(r'D:\python_files\images\test.png', 'rb').read()
    image = MIMEImage(image_file)
    image.add_header('Content-ID', '<image1>')
    # 命名发送的图片
    image["Content-Disposition"] = 'attachment; filename="red_people.png"'
    C.MIMEMultipart对象创建的类型有三种,此模块主要是通过attach方法把上边构造的内容传入到邮件的整体内容中。
    • 邮件类型为”multipart/alternative”的邮件正文中包括纯文本正文(text/plain)和超文本正文(text/html)。
    • 邮件类型为”multipart/related”的邮件正文中包括图片,声音等内嵌资源。
    • 邮件类型为”multipart/mixed”的邮件包含附件,图片,文本等都可以添加,所以发的内容多的话一般是用这个的,选择mixed类型,什么内容都可以发。
    3.邮件头添加内容

    直接上示例代码:

    from email.mime.multipart import MIMEMultipart
    
    
    msg_root = MIMEMultipart('mixed')
    # 发件人
    msg_root['From'] = 'aaa@qq.com<aaa@qq.com>'
    # 收件人
    msg_root['To'] = '666666@qq.com'
    # 邮件主题
    subject = 'python sendemail test successful'
    msg_root['subject'] = Header(subject, 'utf-8')
    
    4.特别的用法说明:

    注:以下的msg_root为:
    msg_root = MIMEMultipart(‘mixed’)

    msg_root.as_string()是将msg_root对象变为str。
    msg_root.attach(MIMEText或者MIMEImage对象),因为MIMEMultipart对象代表邮件本身,其他连个是代表邮件正文,所以这个方法还是很强大的,把其他的构造内容添加到MIMEMultipart对象中就可以把文本,html,附件等一起发送了。

    5.发送各种内容的具体代码实现:

    所有代码合到一块,发送文本,html,图片,txt内容,用的时候你可以把需要的部分摘出来,也就是把没有加入到msg_root的对象拿出来,直接通过下边命令发送,例如只发送文本。
    sftp_obj.sendmail(sender_mail, receiver_mail, text_sub.as_string())。

    import smtplib
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart
    
    
    def send_email_by_qq(to):
        sender_mail = '80617252@qq.com'
        sender_pass = 'aljflsjdf'#同样是乱打的
    
        # 设置总的邮件体对象,对象类型为mixed
        msg_root = MIMEMultipart('mixed')
        # 邮件添加的头尾信息等
        msg_root['From'] = '80617252@qq.com<80617252@qq.com>'
        msg_root['To'] = to
        # 邮件的主题,显示在接收邮件的预览页面
        subject = 'python sendemail test successful'
        msg_root['subject'] = Header(subject, 'utf-8')
    
        # 构造文本内容
        text_info = 'hello world'
        text_sub = MIMEText(text_info, 'plain', 'utf-8')
        msg_root.attach(text_sub)
    
        # 构造超文本
        url = "https://blog.csdn.net/chinesepython"
        html_info = """
        <p>点击以下链接,你会去向一个更大的世界</p>
        <p><a href="%s">click me</a></p>
        <p>i am very galsses for you</p>
        """% url
        html_sub = MIMEText(html_info, 'html', 'utf-8')
        # 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
        html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"'   
        # 把构造的内容写到邮件体中
        msg_root.attach(html_sub)
    
        # 构造图片
        image_file = open(r'D:\python_files\images\test.png', 'rb').read()
        image = MIMEImage(image_file)
        image.add_header('Content-ID', '<image1>')
        # 如果不加下边这行代码的话,会在收件方方面显示乱码的bin文件,下载之后也不能正常打开
        image["Content-Disposition"] = 'attachment; filename="red_people.png"'
        msg_root.attach(image)
    
        # 构造附件
        txt_file = open(r'D:\python_files\files\hello_world.txt', 'rb').read()
        txt = MIMEText(txt_file, 'base64', 'utf-8')
        txt["Content-Type"] = 'application/octet-stream'
        #以下代码可以重命名附件为hello_world.txt  
        txt.add_header('Content-Disposition', 'attachment', filename='hello_world.txt')
        msg_root.attach(txt)
    
        try:
            sftp_obj =smtplib.SMTP('smtp.qq.com', 25)
            sftp_obj.login(sender_mail, sender_pass)
            sftp_obj.sendmail(sender_mail, to, msg_root.as_string())
            sftp_obj.quit()
            print('sendemail successful!')
    
        except Exception as e:
            print('sendemail failed next is the reason')
            print(e)
    
    
    if __name__ == '__main__':
        # 可以是一个列表,支持多个邮件地址同时发送,测试改成自己的邮箱地址
        to = '666666@qq.com'
        send_email_by_qq(to)
    6.总结

    为了让不是很理解发邮件的朋友能更好的理解,在这里是把所有的参数都写死了,比如说发送文件的具体内容,在真正开发使用过程中,可以把具体的内容通过预留出来参数去传入之后发送你想要发送的内容。
    发邮件功能还是很实用的,在真正的开发中或者大多数场合都能用到,比如说项目中一个重要的模块如果出问题了,你需要第一时间知道,就可以加入这个功能,把项目出问题报的具体内容发到你的邮箱,也可以第一时间想下处理的对策。
    下面以我通过此程序发送的邮件内容的截图做结尾吧。
    这里写图片描述

    展开全文
  • 前言:使用发邮件这个功能不难,但是也有一些坑,下面我把开发邮件功能总结了一下分享给大家,同时为了避免篇幅过长,导致大家看的不仔细或看一半不想看了,我将这个功能细分了一下,写了好几篇供大家各取所需。...

    前言:使用发邮件这个功能不难,但是也有一些坑,下面我把开发邮件功能总结了一下分享给大家,同时为了避免篇幅过长,导致大家看的不仔细或看一半不想看了,我将这个功能细分了一下,写了好几篇供大家各取所需。

    Spring mail提供了 JavaMailSender接口实现邮件发送,其底层还是javamail,不过是进一步封装变得更加易用了。下面通过实例看看如何在Spring Boot中使用 JavaMailSender 发送邮件。

    一、引入maven依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>


    二、开启POP3/SMTP服务

           把这个写在第二步,是因为很多没做过发送邮件的可能不知道需要开启这个才能使用第三方程序来发邮件,并且生成的授权码下面也要用到。

     三、配置application.properties文件

    spring.mail.host=smtp.qq.com      --qq邮箱为smtp.qq.com      163邮箱为smtp.163.com
    spring.mail.username=123456789@qq.com     --自己定义的发送者账号
    spring.mail.password=123456     --这里不是注册时的密码,而是上面生成的授权码
    spring.mail.properties.mail.smtp.auth=true   --开启验证 true为开启,false不开启
    spring.mail.properties.mail.smtp.starttls.enable=true    --加密通讯,true开启,false不开启
    spring.mail.properties.mail.smtp.starttls.required=true    --是否必须通过使用加密通讯进行通讯,true开启,false不开启

     四、编写service

    为了能真实使用,编写了一个MailService ,我就不在junt上写了

    @Service
    public class MailService {
    
    	@Autowired
    	private JavaMailSender mailSender;
    
         // 获取application.properties中的值赋给from
    	@Value("${spring.mail.username}")
    	private String from;
    
    	/**
    	 * @param toUsers 收件人
    	 * @param ccUsers 抄送人
    	 * @param title 标题
    	 * @param text 内容
    	 * @param imgPath 图片路径
    	 * @param imgId 图片id
    	 * @return true-成功,false-失败
    	 */
    	public boolean sendImgMail(String[] toUsers,String[] ccUsers, String title, String text, String imgPath, String imgId) {
    		boolean isSend = true;
    		try {
    			MimeMessage mimeMessage = mailSender.createMimeMessage();
    			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    			helper.setFrom(from);// 发件人
    			helper.setTo(toUsers);// 收件人
    			//helper.setCc(ccUsers);//抄送人,使用Cc还是Bcc大家根据具体场景自己选择
    			helper.setBcc(ccUsers);//秘密抄送(发件人,收件人,抄送人都不会看到抄送给谁了)
    			helper.setSubject(title);// 标题
    			/* 创建html内容,若不创建html标签,则图片会以附件的形式发送,而并非直接以内容显示 */
    			String content = "<html><body>" + text + "<img src=\'cid:" + imgId + "\'></img>" + "</body></html>";
    			helper.setText(content, true);// text:内容,true:为HTML邮件(false则为普通文本邮件)
    			File file = new File(imgPath);// 创建图片文件
    			FileSystemResource resource = new FileSystemResource(file);
    			helper.addInline(imgId, resource);
    			mailSender.send(mimeMessage);// 发送邮件
    		} catch (MessagingException e) {
    			isSend = false;
    			e.printStackTrace();
    		}
    		return isSend;
    	}
    }


     五、在controller中或service中调用

    写到这大家肯定都会写了,下面我以controller为例(具体使用场景肯定不是这样的,我只是给大家举个例子)

    @Controller
    public class UserController {
     
        @Autowired
        MailService mailService;
     
        @RequestMapping("sendEmail")
        public String sendMail(ModelMap modelMap) {
            String[] toUsers={"666666@163.com","777777@163.com"};
            String[] ccUsers = {"888888@qq.com","999999@163.com"};
            String isSend=mailService.sendImgMail(toUsers, ccUsers,"测试邮件", "测试内容", "C:\\Users\\Pictures\\dt.jpg", "dt");
             if(isSend){
                modelMap.put("isSend", "成功发送给666666@163.com用户");
             }else{
                modelMap.put("isSend", "发送失败");
             }
            return "index";
        }
    }


    六、最后前台调用sendEmail就行了,具体我就不写了。

    其他发送邮件功能参考:
    SpringBoot发送邮件(一)只有文本的简单邮件:https://blog.csdn.net/m0_37679452/article/details/84345616

    SpringBoot发送邮件(三)发送带有附件的邮件:https://blog.csdn.net/m0_37679452/article/details/84561402

    展开全文
  • python邮件发送和图片

    千次阅读 2020-11-25 17:55:07
    ​ 上班时间干别的事情是不太好的,如果被别人看到的话会大程度上影响个人的前进的步伐。但是如果工作做的差不多了,那么闲着也是闲着。反正cpu资源浪费一天就是一天的折旧,那还...
    ​        上班时间干别的事情是不太好的,如果被别人看到的话会很大程度上影响个人的前进的步伐。但是如果工作做的差不多了,那么闲着也是闲着。反正cpu资源浪费一天就是一天的折旧,那还不如多学点东西。我们之前的过程都需要点击运行,然后出来一个图。这种方式目标太大,容易被人发现。那么我们做个定时任务。然后把图片不显示,而是保存为图片。运营结束之后将图片放到邮件里,然后发送到手机。相对短信需要花费金钱来说,邮件最好了。
           ​通过摸索实践,作者实现了发送邮件的功能。

    import time

    from PIL import ImageGrab
    import smtplib
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header

    endDate=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    # img = ImageGrab.grab()
    # img.save('E:\\12.png')
    my_sender = '123@qq.com' # 发件人邮箱账号
    my_pass = 'tmugmde3333ad' # 发件人邮箱密码
    my_user = '123@qq.com' # 收件人邮箱账号,我这边发送给自己
    sender = “123@qq.com”
    receivers = ['123@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
    msgRoot = MIMEMultipart('related')
    msgRoot['From'] = Header(str(endDate)+" 大盘趋势", 'utf-8')
    msgRoot['To'] = Header("测试", 'utf-8')
    subject = str(endDate)+' 趋势'
    msgRoot['Subject'] = Header(subject, 'utf-8')

    msgAlternative = MIMEMultipart('alternative')
    msgRoot.attach(msgAlternative)

    mail_msg = """
    <p>大盘趋势</p>
    <p>图片演示:</p>
    <p><img src="cid:image1"></p>
    """
    msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))

    # 指定图片为当前目录
    fp = open('E:\\12.png', 'rb')
    msgImage = MIMEImage(fp.read())
    fp.close()

    # 定义图片 ID,在 HTML 文本中引用
    msgImage.add_header('Content-ID', '<image1>')
    msgRoot.attach(msgImage)

    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect('smtp.qq.com', 25) # 25 为 SMTP 端口号
        smtpObj.login(my_user,my_pass)
        smtpObj.sendmail(sender, receivers, msgRoot.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")



    对于定时任务来说太简单了,网上资料一大推还不带坑的那种。ply保存图片也是。
    展开全文
  • JavaMail发送带图片,带附件的邮件

    千次阅读 2019-05-28 15:39:59
    JavaMail发送带图片,带附件的邮件 简介 上一篇文章讲到了使用JavaMail来实现简单邮件的发送,这篇文章是在上一篇文章的基础上来完成的。 导入jar包 <dependency> <groupId>javax.activation<...

    JavaMail发送带图片,带附件的邮件

    简介

    上一篇文章讲到了使用JavaMail来实现简单邮件的发送,这篇文章是在上一篇文章的基础上来完成的。
    

    导入jar包

     <dependency>
    				 <groupId>javax.activation</groupId>
    				 <artifactId>activation</artifactId>
    				 <version>1.1</version>
    			</dependency>
    			<dependency>
    				 <groupId>javax.mail</groupId>
    				 <artifactId>mail</artifactId>
    				 <version>1.4</version>
    			</dependency>
    

    代码实现

    package demo;
    /**
     * 发送带附件的邮件
     */
    import java.util.Date;
    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.MimeUtility;
    
    public class JavaMailImgAttachment {
         
        public static void main(String[] args) throws Exception {
        			//通过Properties属性将邮箱的地址、协议、端口号写入,然后放到session中
        			Properties props = new Properties();
        			//邮箱的协议;有很多 POP3,SMTP,IMAP,在这里使用 SMTP协议
        			props.setProperty("mail.transport.protocol", "smtp");
        			//qq邮箱使用smtp协议的地址
        			props.setProperty("mail.smtp.host", "smtp.qq.com");
        			//qq邮箱smtp的端口号有两个 465和587
        			props.setProperty("mail.smtp.port", "465");
        			//邮箱是否需要授权
        			props.setProperty("mail.smtp.auth", "true");
        			//若是163邮箱则已经结束了,若是qq邮箱需要SSL安全认证
        			//java针对qq的安全认证是通过 javax.net.ssl.SSLSocketFactory全类名的抽象类来实现的
        			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        			//此邮箱只针对经过安全认证的邮箱有效
        			props.setProperty("mail.smtp.socketFactory.fallback", "false");
        			//安全认证的端口号,一边和邮箱的端口号一致
        			props.setProperty("mail.smtp.socketFactory.port", "465");
        			
        			Session session = Session.getInstance(props);
    		        //设置调试信息在控制台打印出来
    		        session.setDebug(true);
    		        //创建邮件
    				MimeMessage message = getMimeMessage(session , "邮件的发送者" ,"邮件的接受者" , "邮件的抄送者" ,"邮件的密送者");
    		        //建立连接对象
    				Transport transport = session.getTransport();
    				//发送邮件的人的用户名和密码,其中密码为授权码
    				transport.connect("发送人邮件的用户名","密码的授权码");
    				transport.sendMessage(message, message.getAllRecipients());
    				//关闭连接
    				transport.close();
        }
         
        /**
    	 * MimeMessage是Message的子类,Message是所有电子邮件的超类;
    	 * 标准的Java Mail API中有一个Message的子类:MimeMessage,它可用于电子邮件和Usenet新闻消息。除此之外,其他厂商可以自由扩展Message来满足自身需求
    	 * @param session   Session:对象
    	 * @param send :邮件的发送者
    	 * @param receive :邮件的接收者
    	 * @param cReceive : 邮件的抄送这
    	 * @param bcReceive :邮件的密送者
    	 * @return
    	 * @throws Exception
    	 */
        public static MimeMessage getMimeMessage(Session session , String send , String receive , String cReceive , String bcReceive) throws Exception{
            //1.创建一封邮件的实例对象
            MimeMessage msg = new MimeMessage(session);
            //2.设置发件人地址
            msg.setFrom(new InternetAddress(send));
            /**
             * 3.设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行
             * MimeMessage.RecipientType.TO:发送
             * MimeMessage.RecipientType.CC:抄送
             * MimeMessage.RecipientType.BCC:密送
             */
            msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receive));
            msg.setRecipient(MimeMessage.RecipientType.CC,new InternetAddress(cReceive));
            msg.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress(bcReceive));
            //4.设置邮件主题
            msg.setSubject("邮件标题(包含图片和附件)","UTF-8");
             
            // 5. 创建图片"节点"
            MimeBodyPart image = new MimeBodyPart();
            // 读取本地文件
            DataHandler dataHandler = new DataHandler(new FileDataSource("src/main/webapp/webapp.jpg"));
            // 将图片数据添加到"节点"
            image.setDataHandler(dataHandler);
            // 为"节点"设置一个唯一编号(在文本"节点"将引用该ID),若需要增加好多图片则用ID来区分
            image.setContentID("mailPic");    
             
            // 6. 创建文本"节点",MimeBodyPart表示的是一个单节点
            MimeBodyPart text = new MimeBodyPart();
            // 这里添加图片的方式是将整个图片包含到邮件内容中, 实际上也可以以 http 链接的形式添加网络图片
            text.setContent("这是一张二维码图片<br/><img src='cid:mailPic'/></a>", "text/html;charset=UTF-8");
             
            // 7. (文本+图片)设置 文本 和 图片"节点"的关系(将 文本 和 图片"节点"合成一个混合"节点"), MimeMultipart表示的是一个符合节点
            MimeMultipart mm_text_image = new MimeMultipart();
            mm_text_image.addBodyPart(text);
            mm_text_image.addBodyPart(image);
            // 关联关系
            mm_text_image.setSubType("related");    
             
            // 8. 将 文本+图片 的混合"节点"封装成一个普通"节点"
            // 最终添加到邮件的 Content 是由多个 BodyPart 组成的 Multipart, 所以我们需要的是 BodyPart,
            // 上面的 mailTestPic 并非 BodyPart, 所有要把 mm_text_image 封装成一个 BodyPart
            MimeBodyPart text_image = new MimeBodyPart();
            text_image.setContent(mm_text_image);
             
            // 9. 创建附件"节点"
            MimeBodyPart attachment = new MimeBodyPart();
            // 读取本地文件
            DataHandler dataHandler2 = new DataHandler(new FileDataSource("src/main/webapp/JavaMail.docx"));
            // 将附件数据添加到"节点"
            attachment.setDataHandler(dataHandler2);
            // 设置附件的文件名(需要编码)
            attachment.setFileName(MimeUtility.encodeText(dataHandler2.getName()));       
             
            // 10. 设置(文本+图片)和 附件 的关系(合成一个大的混合"节点" / Multipart )
            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text_image);
            // 如果有多个附件,可以创建多个多次添加
            mm.addBodyPart(attachment);
            // 混合关系
            mm.setSubType("mixed");         
     
            // 11. 设置整个邮件的关系(将最终的混合"节点"作为邮件的内容添加到邮件对象)
            msg.setContent(mm);
            //设置邮件的发送时间,默认立即发送
            msg.setSentDate(new Date());
             
            return msg;
        }
    }
    

    遇到问题

    首先自己的邮箱要开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,可以在邮箱中设置,未开启状态如下:
    在这里插入图片描述

    成果展示

    在这里插入图片描述

    展开全文
  • 1.添加引用: ...2.创建发送邮件的方法(如果有个收件人或者抄送人,先将收件人用特殊符号拼接,再用split切割成数组然后循环添加就好了) 具体看如下代码: public string sendmail(string toMail, s...
  • 邮件发送 Spring中提供了JavaMailSender用来简化邮件配置,SpringBoot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。 发送前的准备 首先要申请开通POP3/SMTP服务或者IMAP/SMTP服务。SMTP全程为...
  • 邮件的正文中有很多表格,所以使用html写入正文。 实现方法以及遇到的问题: 在附件中放入图片 此方法的结果是图片只能位于邮件的末尾,而且不同的邮件客户端显示效果不同,例如Apple mail会直接把图片显示出来...
  • springboot如何实现发邮件

    千次阅读 2020-05-31 13:05:47
    **注意:**该邮箱要开通smtp服务,具体如何开通晚上又很多方法,这里不做介绍 下面是properties的内容,注意改成自己的邮箱 3.编写核心功能类 下面将分成不同类型的邮件一一展示源代码 文本邮件 @RequestMapping...
  • 利用Python发送带图片和附件的邮件

    千次阅读 多人点赞 2019-08-04 20:28:46
    python真的用途广。写这个脚本的目的在于,是希望利用Selenium做自动化测试时能把错误的截图以及日志及时保存下来并发到指定邮箱,这样十分有利于后期的维护。那么话不说,Show methe code! # coding:utf-8 ...
  • 非常感谢诸位网友的共享,在写代码的过程中给了我大的帮助,如果出现了问题错误,可以搜索尝试,希望对各位有帮助。 实际案例应用见系列二 :https://blog.csdn.net/u010652755/articl...
  • 这些邮件服务器类似显示生活中的邮局,它主要接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中 SMTP服务器地址:一般是smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com 电子邮箱的获得...
  • 方法简单,在构造MIMEText对象时,把HTML字符串传进去,再把第二个参数由plain变为html就可以了: 发送附件 如果Email中要加上附件怎么办?带附件的邮件可以看作包含若干部分的邮件: 文本和各个附件本身,所以,...
  •  java实现发邮件功能,其实SUN在javaEE的开发包里给我们提供了相关的工具,利用 mail.jar 和 activation.jar可以实现这个功能,n年前包括我第一次实习的时候项目上也是用SUN提供的包实现的,实现起来比较繁琐麻烦,...
  • 发送内嵌图片邮件的正确方法

    千次阅读 2017-11-13 18:49:00
    很多企业发出的邮件都是图文并茂的,其中有部分是在邮件中引用网上的图片网址,更专业些的方法是直接在邮件中通过内联附件内嵌图片,这个功能可以由一些邮件客户端程序实现,那么我们怎么在.Net中实现这一功能呢?...
  • 用springBoot给QQ邮箱发送带图片邮件时,图片在电脑上显示不出来,但是从手机上可以看到,查了一些方法,好多说在邮件上有个腾讯的黄条提示,点击显示就可以,但是我这里不管点进邮箱多少次都没有那个黄条提示,...
  • 遇到一个需求 需要发送带有图片邮件 于是参考:http://www.cnblogs.com/zengchunyun/p/9485444.html 完成了带图片附件的邮件发送功能 但是!! 产品竟然说 图片需要在正文里!!正文!! 个人觉得在附件里好...
  • 下班回去听到室友讲到他们项目正在写一个邮件发送,突然手痒写此功能,后来总结形成该文,希望对大家有帮助! 所用:springboot、maven、jpa 先来看看配置文件: spring.jpa.hibernate.ddl-auto=update spring....
  • 初学VBA,看了一个多礼拜的自学视频,又花了四五天时间想做出一个在报表里自动发邮件的小程序 试了很多 也在网上找了许多案例 但是最后效果outlook中显示出附件图片而没有图片附件,收件后则是有图片附件,正文中...
  • 给国外教授发邮件Photo by uniinnsbruck 图片来自uniinnsbruck Professors are some of busiest people around. They have to lecture, hold office hours, work with graduate students and colleagues, attend ...
  • 项目中要发送邮件,写个工具类,小项目,并发量不高,但是要求: 1.件人是163邮箱或qq邮箱 2.... 3.支持正文中放图片 ... 使用原生的java的mail.jar的API开发,需要自己调用组装很多API,MimeM...
  • 使用telnet登陆smtp服务,使用163发邮件

    千次阅读 2018-02-20 13:05:23
    看前提醒:1、跑一遍telnet发邮件有什么好处??就是你对发邮件有了一个更清晰的认识,对发邮件类库的使用有了全新的认知http://blog.csdn.net/qq_33862644/article/details/79339967这个网址是我使用PHPMailer类库...
  • python实现邮件循环自动

    千次阅读 2020-09-08 17:08:04
    发邮件是一种常见的操作,本篇主要介绍一下如何用python实现自动件。 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header ...
  • Windows下bat脚本自动发邮件

    千次阅读 2017-08-30 17:24:11
    摘要:说明:很多木马会利用自身的程序截取系统敏感文件或信息往指定的邮箱,而blat并不是木马,它小巧却有强大的发邮件功能,可不要用它做违法事,感觉和木马功能有一拼!下面先看个具体的实例(在blat同目录创建...
  • java带图片邮件发送方法实现

    千次阅读 2014-06-03 09:46:24
    Java发送带图片邮件,代码为发生2张图片邮件关联方式,注释中有发送带附件、带多人发送解析的代码,可以自行调整
  • 最近在做一个发邮件的客户端程序,用JavaMail来写,代码写得较且杂; 查看资料发现apache有一个commons-mail包对JavaMail进行封装,看了示例代码,非常好用,于是就马上用上了 ; 最后要完成的时候发现一个问题...
  • 邮件能否进入收件箱,主要还是要看邮件内容,可以从一下几个方面入手改善您的邮件内容: 1)邮件内容是否是收件邮局喜欢的内容,不合法的内容(如博彩,色情等违法内容)肯定是收件邮局不喜欢的内容,明显带有推销...
  • javamail发送复杂邮件(包含文本、图片、附件)

    千次阅读 热门讨论 2017-04-01 10:01:29
    其实编程这件事情,很多时候就是你听起来一个功能的实现好像很难,但当你着手去实现,去研究他的实现过程的时候就会发现其实也没有想象中那么难。接下来给大家介绍一下如何实现复杂邮件的传输。网上有很多教程,参考...
  • 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Transfer ...
  • C++ QT SMTP 发送邮件(最新,成功的)

    热门讨论 2013-04-26 16:31:51
    之前在CSDN中,也尝试了很多发送邮件的代码,总是遇到各种各样的问题, 现在找到了这个好东东,和大家分享一下,只要简单配置下,就可以发送邮件了 配置内容 1. 指定 SMTP的服务器 2. 指定件人的用户名(一般都是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,791
精华内容 44,316
关键字:

很多图片怎么发邮件