spring框架学习之路(二)-进阶技能(2)-邮件发送

1 .JDK发送

**注意:163或qq等邮箱不能使用邮箱密码,而是用 授权码 ,另外邮箱要开启smtp服务!
向qq邮箱发送的邮件,主题和内容不能由test/helloworld/测试 等关键字,否则会被垃圾邮件的屏蔽机制屏蔽掉!**

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class JavaMail {
    private String to;
    private String from;
    private String username;
    private String password;
    private String subject;
    private String content;
    private String smtpServer;
    private List<String> list = new ArrayList<String>();
    public void sendMail() {
        Properties props = System.getProperties();
        //邮件服务器
        props.put("mail.smtp.host", smtpServer);
        //是否使用用户名和密码权限
        props.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(props,new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });

        try {
            //建立一个邮件
            MimeMessage message = new MimeMessage(session);
            //发送方=用户名
            message.setFrom(new InternetAddress(from));
            //设置接收方
            InternetAddress[] address = { new InternetAddress(to) };
            message.setRecipients(RecipientType.TO, address);
            //邮件主题
            message.setSubject(subject);
            //邮件正文
            Multipart mp = new MimeMultipart();
            //邮件内容之一
            MimeBodyPart mbp = new MimeBodyPart();
            mbp.setText(content);
            //将内容包含进正文
            mp.addBodyPart(mbp);
            //添加附件
            for (String fileName : list) {
                MimeBodyPart mbpFile = new MimeBodyPart();
                //文件上传
                FileDataSource fds = new FileDataSource(fileName);
                mbpFile.setDataHandler(new DataHandler(fds));
                mbpFile.setFileName(new File(fileName).getName());

                mp.addBodyPart(mbpFile);
            }
            //把正文添加到邮件
            message.setContent(mp);
            message.setSentDate(new Date());//发送时间
            //发送邮件
            Transport.send(message);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        JavaMail mail = new JavaMail();
        mail.setSubject("hello java mail for test 05");
        mail.setSmtpServer("smtp.163.com");
        mail.setUsername("1********@163.com");
        mail.setPassword("xxxxxxxxx");
        mail.setTo("916168056@qq.com");
        mail.setFrom("1********@163.com");
        mail.setContent("this is mail for java mail");
        mail.list.add("c:/1.jpg");
        mail.list.add("c:/2.jpg");
        mail.sendMail();
    }
    //字段的set方法
}

2.Spring提供邮件接口

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host">
<value>smtp.163.com</value>
</property>    
<property name="username">
<value>1*********@163.com</value>
</property>        
<property name="password">
            <value>xxxxxxxxx</value>
</property>  
<property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.timeout">25000</prop>
           </props>     
</property>    
</bean>

public static void main(String[] args) {        
        ApplicationContext ac=new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");    
        MailSender sender=ac.getBean("mailSender",MailSender.class);        
        SimpleMailMessage message=new SimpleMailMessage();  
        message.setTo("916168056@qq.com");
        message.setFrom("1********@163.com");
        message.setSubject("springMail for test");
        message.setText("test springmail");
        sender.send(message);       
    }

附录:
Java邮件发送协议
1)SMTP(simple mail transfer protocol) 简单邮件传输协议
2)pop3 邮局协议
3)Session(会话)

JavaJDK中javamail MimeMessage多媒体

MimeMessage代表一个邮件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值