博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现邮箱发送邮件功能
阅读量:5738 次
发布时间:2019-06-18

本文共 4302 字,大约阅读时间需要 14 分钟。

   邮箱验证是一个很常见的功能了,基本上每个网站都会用的到,java也有专门的jar来处理邮件发送等服务,这里只是简单的实现一下发送邮件的功能,具体jar包就不再提供了,我会把所有需要引用的包都贴出来,方便大家copy。直奔主题:

第一步:封装发件人账号密码

import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;/** * 发件人账号密码 * @author zhangdi * */public class MailAuthenticator extends   Authenticator{    public static String USERNAME = "";    public static String PASSWORD = "";    public MailAuthenticator() {    }    protected PasswordAuthentication getPasswordAuthentication() {        return new PasswordAuthentication(USERNAME, PASSWORD);    }}

第二步:提供发送操作类

import java.util.Date;import java.util.Properties;import javax.mail.Message;import javax.mail.Multipart;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;/** * 邮件发送操作类 *  * @author zhangdi *  */public class MailOperation {    /**     * 发送邮件     * @param user 发件人邮箱     * @param password 授权码(注意不是邮箱登录密码)     * @param host      * @param from 发件人     * @param to 接收者邮箱     * @param subject 邮件主题     * @param content 邮件内容     * @return success 发送成功 failure 发送失败     * @throws Exception     */    public String sendMail(String user, String password, String host,            String from, String to, String subject, String content)            throws Exception {        if (to != null){            Properties props = System.getProperties();            props.put("mail.smtp.host", host);            props.put("mail.smtp.auth", "true");            MailAuthenticator auth = new MailAuthenticator();            MailAuthenticator.USERNAME = user;            MailAuthenticator.PASSWORD = password;            Session session = Session.getInstance(props, auth);            session.setDebug(true);            try {                MimeMessage message = new MimeMessage(session);                message.setFrom(new InternetAddress(from));                if (!to.trim().equals(""))                    message.addRecipient(Message.RecipientType.TO,                            new InternetAddress(to.trim()));                message.setSubject(subject);                MimeBodyPart mbp1 = new MimeBodyPart(); // 正文                mbp1.setContent(content, "text/html;charset=utf-8");                Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件                mp.addBodyPart(mbp1);                // mp.addBodyPart(mbp2);                message.setContent(mp);                message.setSentDate(new Date());                message.saveChanges();                Transport trans = session.getTransport("smtp");                trans.send(message);                System.out.println(message.toString());            } catch (Exception e){                e.printStackTrace();                return "failure";            }            return "success";        }else{                        return "failure";        }    }}

第三步:测试

public static void main(String[] args) {        MailOperation operation = new MailOperation();        String user = "你的邮箱地址";        String password = "你的邮箱授权码";        String host = "smtp.163.com";        String from = "你的邮箱地址";        String to = "目标邮箱地址";// 收件人        String subject = "输入邮件主题";        //邮箱内容        StringBuffer sb = new StringBuffer();        String yzm = RandomUtil.getRandomString(6);        sb.append(""+"
温馨提示:" + "
欢迎使用NET微活动,您的注册码为:

"+yzm+"

本邮件由系统自动发出,请勿回复。
感谢您的使用。
杭州恩意替电子商务有限公司
" +"
"); try { String res = operation.sendMail(user, password, host, from, to, subject, sb.toString()); System.out.println(res); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }

注意:邮件发送很简单,不过有几个地方需要注意一下:

  1、发件人的密码不是你登录邮箱的密码,而是设置POP3/SMTP/IMAP是获取的授权码,如下图(截取自163邮箱);

  2、如果使用QQ邮箱作为发件邮箱的话,需要专门配置SSL证书等等信息,这是因为QQ邮箱的要求(当然省事的做法就使用企业邮箱或者其他邮箱提供商比如163);

  3、如果使用了其他邮箱服务商提供的邮箱来作为发件人,那么在编辑邮件内容的时候需要注意一些敏感词的问题,如果你的邮件中含有敏感内容的话邮箱服务商将不会为你发送该邮件;

  4、如果是在main方法中调用的话是可以的,但是如果要部署到web容器(比如tomcat)中的话,则需要引入两个jar包

 

posted on
2018-01-03 16:12 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/zhangdiIT/p/8184293.html

你可能感兴趣的文章
经验分享:JavaScript小技巧
查看>>
[MOSEK] Stupid things when using mosek
查看>>
程序实例---栈的顺序实现和链式实现
查看>>
服务的使用
查看>>
Oracle 用户与模式
查看>>
MairDB 初始数据库与表 (二)
查看>>
拥在怀里
查看>>
chm文件打开,有目录无内容
查看>>
whereis、find、which、locate的区别
查看>>
一点不懂到小白的linux系统运维经历分享
查看>>
桌面支持--打不开网页上的pdf附件解决办法(ie-tools-compatibility)
查看>>
nagios监控windows 改了NSclient++默认端口 注意事项
查看>>
干货 | JAVA代码引起的NATIVE野指针问题(上)
查看>>
POI getDataFormat() 格式对照
查看>>
Python 中的进程、线程、协程、同步、异步、回调
查看>>
好的产品原型具有哪些特点?
查看>>
实现java导出文件弹出下载框让用户选择路径
查看>>
刨根问底--技术--jsoup登陆网站
查看>>
OSChina 五一劳动节乱弹 ——女孩子晚上不要出门,发生了这样的事情
查看>>
Spring--通过注解来配置bean
查看>>