以下示例可以使用spring发送电子邮件并将其加载到固定模板中,请尝试一下
必须用于spring-context包和com.springsource.org.Apache.velocity-1.6.2.jar。 其他是常见的软件包,包括commons系列软件包
代码如下
package asia.wildfire.mail;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.mail.internet.mime消息;
importorg.Apache.velocity.app.velocity engine;
importorg.spring framework.core.io.file系统资源;
importorg.spring framework.mail.javamail.javamail sender;
importorg.spring framework.mail.javamail.javamailsenderimpl;
importorg.spring framework.mail.javamail.mime message helper;
importorg.spring framework.mail.javamail.mime message preparator;
importorg.spring framework.ui.velocity.velocityengineutils;
//*
*创建的with intellij idea。
* User: liuxiaochen
*日期: 13-9-22
* Time:下午6:50
*修改说明
*/
publicclassactsocialmailsender {
//从配置文件读取相应的邮件配置属性
privatestaticfinalstringemailhost=' SMTP.Gmail.com ';
privatestaticfinalstringusername=' * * * @ Gmail.com ';
私有身份验证密码=' * * * * * * * ';
私有身份证明邮件地址=' true ';
私有静态地图简档=null;
私密性staticjavamailsenderimplinstance=null;
私密性staticvelocityenginevelocityengine=空;
静态{
proMap=new HashMap (;
promap.put('resource.loader ',' class ' );
promap.put (' class.resource.loader.class ',' org.Apache.velocity.runtime.resource.loader.claspathresososs
}
publicstaticjavamailsendergetinstance (
if (空值==实例) {
同步(javamailsenderimpl.class )。
if (空值==实例) {
instance=new JavaMailSenderImpl (;
instance.sethost (电子邮件主机);
instance.setusername(username;
instance.set password (密码;
属性属性=new properties (;
properties.set property (' mail.SMTP.auth ',mailAuth );
使用gmail发送邮件必须设置以下参数,主要是端口不同
if (email host.index of (SMTP.Gmail.com) )。
properties.set property (' mail.SMTP.socket factory.class ',' javax.net.ssl.SSLSocketFactory ' );
properties.set property (' mail.SMTP.socket factory.fall back ',' false ' );
properties.set property (' mail.SMTP.port ',' 465 ' );
properties.set property (' mail.SMTP.socket factory.port ',' 465 ' );
}
instance.setjavamailproperties (properties;
}
}
}
返回实例;
}
publicstaticvelocityenginegetvelocityengineinstance (
if(null==velocityengine ) {
同步(velocity engine.class )。
if(null==velocityengine ) {
velocity engine=newvelocityengine (;
for (map.entry entry : promap.entryset () )。
velocity engine.set property (entry.getkey )、entry.getValue );
}
}
}
}
返回电压引擎;
}
publicstaticvoidsendemail (finalmapmodel,final String subject,final String vmfile,final String[] mailTo,finalstring[]
{
mimemessagepreparatorpreparator=newmimemessagepreparator {
注意mime消息更新器接口中只有一个回调函数
公共语音更新(最少消息最少消息) throws Exception
{
mimemessagehelpermessage=newmimemessagehelper (mime消息,true,' GBK ' );
//这是生成Mime邮件的简单工具,不用GBK的话,中文会乱码
//使用英语时,可以使用mimemessagehelpermessage=newmimemessagehelper (mime message )。
消息. setto (mailto ); //设置接收方的电子邮件地址
message.setsubject(subject; //设置邮件主题
消息. setfrom (username; //设定发送源地址
string text=velocityengineutils.mergetemplateintostring (
actsocialmailsender.getvelocityengineinstance (,虚拟机文件,' UTF-8 ',型号);
//加载从模板发送的内容,虚拟机文件成为模板文件的名称
请注意,//模板中有以中文添加GBK的模板,model中存储了替换模板字段值的模板
message.settext(text,true );
//将发送的内容分配给MimeMessageHelper,之后的true表示内容已解析为html
如果不想分析//文本的内容,可以使用false或不添加它
文件系统资源文件;
添加for(strings:files )//附件
{
file=newfilesystemresource (new file (s ); //读取附件
消息.添加附件(s,file; //在邮件中添加附件
}
}
(;
actsocialmailsender.getinstance ().send(preparator ); //发送邮件
}
publicstaticvoidsendalertemail (finalmapmodel,final String[] mailTo ) {
send email (模型、'、'、'、mailTo、new String[]{};
}
}
上述代码是发送邮件所需的代码,可以看到以下内容
测试类
公共类访问权限
publicstaticvoidmain (字符串[ ] args ) {
映射模型=new hashmap (;
model.put(username,) xiaochen.liu );
model.put (电子邮件地址,) xiaochen.liu@xingxinghuo.com);
actsocialmailsender.send email (型号,“欢迎”,“welcome.vm”,newstring () (***@gmail.com),newstring
}
}
模板文件如下
welcome.vm
你好$! {userName},欢迎来到actsocial! 你的电子邮件地址是$! {电子邮件地址}。
此消息由系统自动发送。 请不要回信。
是的,仅此而已