Java发送邮件文本和附件.docx

上传人:b****6 文档编号:15432024 上传时间:2023-07-04 格式:DOCX 页数:12 大小:31.64KB
下载 相关 举报
Java发送邮件文本和附件.docx_第1页
第1页 / 共12页
Java发送邮件文本和附件.docx_第2页
第2页 / 共12页
Java发送邮件文本和附件.docx_第3页
第3页 / 共12页
Java发送邮件文本和附件.docx_第4页
第4页 / 共12页
Java发送邮件文本和附件.docx_第5页
第5页 / 共12页
Java发送邮件文本和附件.docx_第6页
第6页 / 共12页
Java发送邮件文本和附件.docx_第7页
第7页 / 共12页
Java发送邮件文本和附件.docx_第8页
第8页 / 共12页
Java发送邮件文本和附件.docx_第9页
第9页 / 共12页
Java发送邮件文本和附件.docx_第10页
第10页 / 共12页
Java发送邮件文本和附件.docx_第11页
第11页 / 共12页
Java发送邮件文本和附件.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java发送邮件文本和附件.docx

《Java发送邮件文本和附件.docx》由会员分享,可在线阅读,更多相关《Java发送邮件文本和附件.docx(12页珍藏版)》请在冰点文库上搜索。

Java发送邮件文本和附件.docx

Java发送邮件文本和附件

Java发送邮件(文本和附件)

 Author:

zxw 

Time:

2015-05-07

一、Java发送邮件:

文件

packagecom;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.Properties;

importjavax.mail.Message;

importjavax.mail.MessagingException;

importjavax.mail.Session;

importjavax.mail.Transport;

importjavax.mail.internet.InternetAddress;

importjavax.mail.internet.MimeMessage;

importjavax.mail.internet.MimeUtility;

/**

*Java发送文件信息

*

*实现java发送邮件的过程大体有以下几步:

*准备一个properties文件,该文件中存放SMTP服务器地址等参数。

*利用properties创建一个Session对象

*利用Session创建Message对象,然后设置邮件主题和正文

*利用Transport对象发送邮件

*需要的jar有2个:

activation.jar和mail.jar

*

*/

publicclassJavaMailWithText{

/**

*Message对象将存储我们实际发送的电子邮件信息,

*Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMailsession。

*/

privateMimeMessagemessage;

/**

*Session类代表JavaMail中的一个邮件会话。

*每一个基于JavaMail的应用程序至少有一个Session(可以有任意多的Session)。

*

*JavaMail需要Properties来创建一个session对象。

*寻找"mail.smtp.host"属性值就是发送邮件的主机

*寻找"mail.smtp.auth"身份验证,目前免费邮件服务器都需要这一项

*/

privateSessionsession;

/***

*邮件是既可以被发送也可以被受到。

JavaMail使用了两个不同的类来完成这两个功能:

Transport和Store。

*Transport是用来发送信息的,而Store用来收信。

对于这的教程我们只需要用到Transport对象。

*/

privateTransporttransport;

privateStringmailHost="";

privateStringsender_username="";

privateStringsender_password="";

privatePropertiesproperties=newProperties();

/*

*初始化方法

*/

publicJavaMailWithText(booleandebug){

//带/是加载classpath(即WebRoot\WEB-INF\classes)下的文件;不带/是加载当前目录的下的文件

InputStreamin=JavaMailWithText.class.getResourceAsStream("/MailServer.properties");

try{

//加载属性文件内容

properties.load(in);

this.mailHost=properties.getProperty("mail.smtp.host");

this.sender_username=properties.getProperty("mail.sender.username");

this.sender_password=properties.getProperty("mail.sender.password");

}catch(IOExceptione){

e.printStackTrace();

}

session=Session.getInstance(properties);

session.setDebug(debug);//开启后有调试信息

message=newMimeMessage(session);

}

/**

*发送邮件

*

*@paramsubject

*邮件主题

*@paramsendHtml

*邮件内容

*@paramreceiveUser

*收件人地址

*/

publicvoiddoSendHtmlEmail(Stringsubject,StringsendHtml,

StringreceiveUser){

try{

//发件人

//InternetAddressfrom=newInternetAddress(sender_username);

//下面这个是设置发送人的Nickname

InternetAddressfrom=newInternetAddress(MimeUtility.encodeWord("幻影")+"<"+sender_username+">");

message.setFrom(from);

//收件人

InternetAddressto=newInternetAddress(receiveUser);

message.setRecipient(Message.RecipientType.TO,to);//还可以有CC、BCC

//邮件主题

message.setSubject(subject);

Stringcontent=sendHtml.toString();

//邮件内容,也可以使纯文本"text/plain"

message.setContent(content,"text/html;charset=UTF-8");

//保存邮件

message.saveChanges();

transport=session.getTransport("smtp");

//smtp验证,就是你用来发邮件的邮箱用户名密码

transport.connect(mailHost,sender_username,sender_password);

//发送

transport.sendMessage(message,message.getAllRecipients());

//System.out.println("sendsuccess!

");

}catch(Exceptione){

e.printStackTrace();

}finally{

if(transport!

=null){

try{

transport.close();

}catch(MessagingExceptione){

e.printStackTrace();

}

}

}

}

publicstaticvoidmain(String[]args){

JavaMailWithTextse=newJavaMailWithText(false);

se.doSendHtmlEmail("邮件主题","邮件内容","466@");

}

}

二、Java发送邮件:

附件

packagecom;

importjava.io.File;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.Properties;

importjavax.activation.DataHandler;

importjavax.activation.DataSource;

importjavax.activation.FileDataSource;

importjavax.mail.BodyPart;

importjavax.mail.Message;

importjavax.mail.MessagingException;

importjavax.mail.Multipart;

importjavax.mail.Session;

importjavax.mail.Transport;

importjavax.mail.internet.InternetAddress;

importjavax.mail.internet.MimeBodyPart;

importjavax.mail.internet.MimeMessage;

importjavax.mail.internet.MimeMultipart;

importjavax.mail.internet.MimeUtility;

/**

*Java发送附件信息

*

*实现java发送邮件的过程大体有以下几步:

*准备一个properties文件,该文件中存放SMTP服务器地址等参数。

*利用properties创建一个Session对象

*利用Session创建Message对象,然后设置邮件主题和正文

*利用Transport对象发送邮件

*需要的jar有2个:

activation.jar和mail.jar

*

*/

publicclassJavaMailWithAttachment{

privateMimeMessagemessage;

privateSessionsession;

privateTransporttransport;

privateStringmailHost="";

privateStringsender_username="";

privateStringsender_password="";

privatePropertiesproperties=newProperties();

/*

*初始化方法

*/

publicJavaMailWithAttachment(booleandebug){

InputStreamin=JavaMailWithAttachment.class.getResourceAsStream("/MailServer.properties");

try{

properties.load(in);

this.mailHost=properties.getProperty("mail.smtp.host");

this.sender_username=properties.getProperty("mail.sender.username");

this.sender_password=properties.getProperty("mail.sender.password");

}catch(IOExceptione){

e.printStackTrace();

}

session=Session.getInstance(properties);

session.setDebug(debug);//开启后有调试信息

message=newMimeMessage(session);

}

/**

*发送邮件

*

*@paramsubject

*邮件主题

*@paramsendHtml

*邮件内容

*@paramreceiveUser

*收件人地址

*@paramattachment

*附件

*/

publicvoiddoSendHtmlEmail(Stringsubject,StringsendHtml,StringreceiveUser,Fileattachment){

try{

//发件人

InternetAddressfrom=newInternetAddress(sender_username);

message.setFrom(from);

//收件人

InternetAddressto=newInternetAddress(receiveUser);

message.setRecipient(Message.RecipientType.TO,to);

//邮件主题

message.setSubject(subject);

//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

Multipartmultipart=newMimeMultipart();

//添加邮件正文

BodyPartcontentPart=newMimeBodyPart();

contentPart.setContent(sendHtml,"text/html;charset=UTF-8");

multipart.addBodyPart(contentPart);

//添加附件的内容

if(attachment!

=null){

BodyPartattachmentBodyPart=newMimeBodyPart();

DataSourcesource=newFileDataSource(attachment);

attachmentBodyPart.setDataHandler(newDataHandler(source));

//网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定

//这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

//sun.misc.BASE64Encoderenc=newsun.misc.BASE64Encoder();

//messageBodyPart.setFileName("=?

GBK?

B?

"+enc.encode(attachment.getName().getBytes())+"?

=");

//MimeUtility.encodeWord可以避免文件名乱码

attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));

multipart.addBodyPart(attachmentBodyPart);

}

//将multipart对象放到message中

message.setContent(multipart);

//保存邮件

message.saveChanges();

transport=session.getTransport("smtp");

//smtp验证,就是你用来发邮件的邮箱用户名密码

transport.connect(mailHost,sender_username,sender_password);

//发送

transport.sendMessage(message,message.getAllRecipients());

System.out.println("sendsuccess!

");

}catch(Exceptione){

e.printStackTrace();

}finally{

if(transport!

=null){

try{

transport.close();

}catch(MessagingExceptione){

e.printStackTrace();

}

}

}

}

publicstaticvoidmain(String[]args){

JavaMailWithAttachmentse=newJavaMailWithAttachment(true);

Fileaffix=newFile("D:

\\测试-test.txt");

se.doSendHtmlEmail("邮件主题","邮件内容","466@",affix);//

}

}

三、属性文件MailServer.properties

#----------------这两个是构建session必须的字段----------

#smtp服务器

mail.smtp.host=

#身份验证

mail.smtp.auth=true

#--------------------------------------------------------------

#发送者的邮箱用户名

mail.sender.username=learn@

#发送者的邮箱密码

mail.sender.password=1124

#如果报错:

javamail535Authenticationfailed请开启POP3/SMTP服务

四、目录结构

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2