基于java使用JavaMail发送邮件
一、邮件的相关概念
邮件协议。主要包括:
smtp协议:simple mail transfer protocol,即简单邮件传输协议,用于发送电子邮件
pop3协议:post office protocol 3,即邮局协议的第三个版本,用于接收邮件
imap协议:internet message access protocol,即互联网消息访问协议,是pop3的替代协议
--------------------------------------------------------------------------------
二、搭建james邮件服务器
james是apache的一个开源项目,纯java实现
搭建james服务器
① 下载apache-james-2.3.2.zip解压
② 运行bin目录下的run.bat即可启动服务器[telnet localhost 4555]
③ 通过apps\james\sar-inf\config.xml配置服务器
注:先到bin下run一道。 放如非中文目录, 得再控制面板开启telnet客户端
--------------------------------------------------------------------------------
三、安装outlook[邮件客户端]
产品秘钥:pqdv9-gpdv4-crm4d-phdth-4m2mt
创建用户账号
一、使用telnet连接james的remote administration tool
二、以管理员身份登录
三、使用adduser命令添加用户
--------------------------------------------------------------------------------
四、配置outlook邮件客户端
为了方便查看,可以配置microsoft outlook邮件客户端,保证james邮件服务器是启动状态,启动microsoft outlook.
选择“工具”->“选项”,打开“选项”面板。选择“邮件设置”并点击“电子邮件账户”,打开“账号设置”面板。在“电子邮件”选项卡下新建邮件账户
--------------------------------------------------------------------------------
五、案例[搭建james邮件服务器]
需求说明:
在本机搭建james邮件服务器,自定义服务器的名称。
创建两个测试用户。
在microsoft outlook中配置其中一个测试用户为outlook邮件账户
--------------------------------------------------------------------------------
六、使用javamail发送电子邮件(案例)
需求:
使用javamail技术,实现从a账户给b账户发送一封电子邮件,标题为“会议通知”,邮件内容为“xx你好!请于明天下午16:00 准时到b01会议室召开技术讨论会。”通过outlook 客户端查看邮件程序发送的邮件是否发送成功
关键代码:
创建一个类emailauthenticator并继承自authenticator,并植入用户名和密码
创建mail类设置邮件信息:
public class mail { private string mailserver,from,to,mailsubject,mailcontent; private string username,password; public mail(){ //设置邮件信息 //进行认证登录的用户名 username="hq@mail.com"; //认证密码 password="hq"; //认证的邮箱对应的邮件服务器 mailserver="192.168.17.176"; //发件人信息 from="wj"; //收件人信息 to="wj@mail.com"; //邮件标题 mailsubject="我们都是好孩子333"; //邮件内容 mailcontent="这是一封测试邮件!如有雷同,纯属不可能"; } //设置邮件服务器 @suppresswarnings("static-access") public void send(){ properties prop=system.getproperties(); //指定邮件server prop.put("mail.smtp.host", mailserver); //是否开启认证 prop.put("mail.smtp.auth", "true"); //smtp协议的 prop.put("mail.smtp.port", "25"); //产生session服务 emailauthenticator mailauth=new emailauthenticator(username, password); session mailsession=session.getinstance(prop,(authenticator)mailauth); try { //封装message对象 message message=new mimemessage(mailsession); message.setfrom(new internetaddress(from)); //发件人 message.setrecipient(message.recipienttype.to, new internetaddress(to));//收件人 message.setsubject(mailsubject); //设置内容(设置字符集处理乱码问题) message.setcontent(mailcontent,"text/html;charset=gbk"); message.setsentdate(new date()); //创建transport实例,发送邮件 transport tran=mailsession.gettransport("smtp"); tran.send(message,message.getallrecipients()); tran.close(); } catch (exception e) { e.printstacktrace(); } }
测试类:
public class mytest { public static void main(string[] args) { mail mail=new mail(); mail.send(); system.out.println("success!"); } }
--------------------------------------------------------------------------------
七、发送带附件的mail
public class mailwithattachment { private javamailsender mailsender; //必须使用 javamailsender public void setmailsender(javamailsender mailsender) { this.mailsender = mailsender; } public void send() throws messagingexception,ioexception{ mimemessage mimemessage = mailsender.createmimemessage(); mimemessagehelper helper = new mimemessagehelper(mimemessage, true, "utf-8"); helper.setfrom("hq@mail.com"); helper.setto("wj@mail.com"); helper.setsubject("哈哈哈"); helper.settext("每日一笑,开开心心!!!"); //添加附件1 classpathresource file1 = new classpathresource( "/cn/bdqn/attachfiles/test.doc"); helper.addattachment(file1.getfilename(), file1.getfile()); //添加附件2:附件的文件名为中文时,需要对文件名进行编码转换,解决乱码问题 classpathresource file2 = new classpathresource( "/cn/bdqn/attachfiles/附件测试文件.doc"); helper.addattachment(mimeutility.encodeword(file2.getfilename()),file2.getfile()); mailsender.send(mimemessage); } }
测试类:
public class mailtest { public static void main(string[] args){ applicationcontext context = new classpathxmlapplicationcontext("applicationcontext.xml"); /*测试带附件的邮件*/ try{ mailwithattachment mailwithattach = (mailwithattachment)context.getbean("mailwithattachment"); mailwithattach.send(); }catch(exception e){ system.out.print(e.tostring()); } } }
applicationcontext.xml:大配置
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。