offsettop-mathtype 破解版
![gmail smtp](/uploads/image/0720.jpg)
2023年4月4日发(作者:番茄小说免费版下载最新版本)
使⽤发送邮件
作为⼀个Java开发⼯程师,发送邮件是必须掌握,因为很多的⽹站使⽤邮箱来注册,或者使⽤邮箱来重置密码,使⽤⾮常普遍。
1、步骤总结
使⽤包中的api发送邮件,⼤致有5个步骤
1、继承Authenticator类,重写getPasswordAuthentication⽅法。⽤于登录校验。
2、创建⼀个Properties对象,⽤于存放SMTP服务器地址、端⼝号
3、⽤步骤1和2得到的对象创建⼀个Session对象,相当于邮箱登录
4、创建⼀个MimeMessage,设置发件⼈、收件⼈、抄送⼈、主题、内容,添加附件
5、Transport发送邮件
2、关于邮件协议和端⼝
常⽤的电⼦协议协议有SMTP、POP3、IMAP4,它们都⾪属于TCP/IP簇,默认状态下,分别通过TCP端⼝25、110和143建⽴连接。
发送邮件基于SMTP协议。下⾯列出了常⽤的邮件服务器地址和端⼝。(感谢):
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
sinaVIP:
POP3服务器:(端⼝:110)
SMTP服务器:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
126邮箱:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
139邮箱:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
QQ邮箱
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
QQ企业邮箱
POP3服务器地址:(SSL启⽤端⼝:995)
SMTP服务器地址:(SSL启⽤端⼝:587/465)
:
POP3服务器地址:
SMTP服务器地址:
:
POP3服务器地址:(端⼝:995)
SMTP服务器地址:(端⼝:587
HotMail
HotMail
POP3服务器地址:(端⼝:995)
SMTP服务器地址:(端⼝:587)
gmail()
POP3服务器地址:(SSL启⽤端⼝:995)
SMTP服务器地址:(SSL启⽤端⼝:587)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
Foxmail:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:(端⼝:110)
SMTP服务器地址:(端⼝:25)
:
POP3服务器地址:
SMTP服务器地址:
3、发送邮件
接下来上⼲货。
3.1、添加依赖
我的⼯程师Maven⼯程,所以在中直接添加依赖
3.2、继承Authenticator并重写getPasswordAuthentication⽅法
ticator;
rdAuthentication;
publicclassMyAuthenticatorextendsAuthenticator{
StringuserName=null;
Stringpassword=null;
publicMyAuthenticator(){
}
publicMyAuthenticator(Stringusername,Stringpassword){
me=username;
rd=password;
}
protectedPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication(userName,password);
}
}
3.3、发送邮件核⼼类Email
;
ties;
dMap;
ndler;
taSource;
pCommandMap;
rt;
e;
art;
n;
ort;
etAddress;
dyPart;
ssage;
ltipart;
ility;
publicclassEmail{
privateStringsmtpHost;//邮件服务器地址
privateStringsendUserName;//发件⼈的⽤户名
privateStringsendUserPass;//发件⼈密码
privateMimeMessagemimeMsg;//邮件对象
privateMultipartmp;//附件添加的组件
privatevoidinit(){
//创建⼀个密码验证器
MyAuthenticatorauthenticator=null;
authenticator=newMyAuthenticator(sendUserName,sendUserPass);
//实例化Properties对象
Propertiesprops=perties();
("",smtpHost);
("","true");//需要⾝份验证
("","true");
//建⽴会话
Sessionsession=aultInstance(props,authenticator);
//置true可以在控制台(console)上看到发送邮件的过程
ug(true);
//⽤session对象来创建并初始化邮件对象
mimeMsg=newMimeMessage(session);
//⽣成附件组件的实例
mp=newMimeMultipart();
}
privateEmail(StringsmtpHost,StringsendUserName,StringsendUserPass,Stringto,Stringcc,StringmailSubject,
StringmailBody,List
st=smtpHost;
erName=sendUserName;
erPass=sendUserPass;
init();
setFrom(sendUserName);
setTo(to);
setCC(cc);
setBody(mailBody);
setSubject(mailSubject);
if(attachments!=null){
for(Stringattachment:attachments){
addFileAffix(attachment);
}
}
}
/**
*邮件实体
*
*@paramsmtpHost
*邮件服务器地址
*@paramsendUserName
*发件邮件地址
*@paramsendUserPass
*发件邮箱密码
*@paramto
*收件⼈,多个邮箱地址以半⾓逗号分隔
*@paramcc
*抄送,多个邮箱地址以半⾓逗号分隔
*@parammailSubject
*邮件主题
*@parammailBody
*邮件正⽂
*@paramattachmentPath
*附件路径
*@return
*/
publicstaticEmailentity(StringsmtpHost,StringsendUserName,StringsendUserPass,Stringto,Stringcc,
StringmailSubject,StringmailBody,List
returnnewEmail(smtpHost,sendUserName,sendUserPass,to,cc,mailSubject,mailBody,attachments);
}
/**
*设置邮件主题
*
*@parammailSubject
*@return
*/
privatebooleansetSubject(StringmailSubject){
try{
ject(mailSubject);
}catch(Exceptione){
returnfalse;
}
returntrue;
}
/**
*设置邮件内容,并设置其为⽂本格式或HTML⽂件格式,编码⽅式为UTF-8
*
*@parammailBody
*@return
*/
privatebooleansetBody(StringmailBody){
try{
BodyPartbp=newMimeBodyPart();
tent("
"text/html;charset=UTF-8");
//在组件上添加邮件⽂本
yPart(bp);
}catch(Exceptione){
n("设置邮件正⽂时发⽣错误!"+e);
returnfalse;
}
returntrue;
}
/**
*添加⼀个附件
*
*@paramfilename
*邮件附件的地址,只能是本机地址⽽不能是⽹络地址,否则抛出异常
*@return
*/
publicbooleanaddFileAffix(Stringfilename){
try{
if(filename!=null&&()>0){
BodyPartbp=newMimeBodyPart();
FileDataSourcefileds=newFileDataSource(filename);
aHandler(newDataHandler(fileds));
eName(Text(e(),"utf-8",null));//解决附件名称乱码
yPart(bp);//添加附件
}
}catch(Exceptione){
n("增加邮件附件:"+filename+"发⽣错误!"+e);
returnfalse;
}
returntrue;
}
/**
*设置发件⼈地址
*
*@paramfrom
*发件⼈地址
*@return
*/
privatebooleansetFrom(Stringfrom){
try{
m(newInternetAddress(from));
}catch(Exceptione){
returnfalse;
}
returntrue;
}
/**
*设置收件⼈地址
*
*@paramto收件⼈的地址
*@return
*/
privatebooleansetTo(Stringto){
if(to==null)
returnfalse;
try{
ipients(,(to));
}catch(Exceptione){
returnfalse;
}
returntrue;
}
/**
*设置抄送
*
*@paramcc
*@return
*/
privatebooleansetCC(Stringcc){
if(cc==null){
returnfalse;
}
try{
ipients(,(cc));
}catch(Exceptione){
returnfalse;
}
returntrue;
}
/**
*noobjectDCHforMIMEtypemultipart/mixed报错解决
*/
privatevoidsolveError(){
MailcapCommandMapmc=(MailcapCommandMap)aultCommandMap();
lcap("text/html;;x-java-content-handler=_html");
lcap("text/xml;;x-java-content-handler=_xml");
lcap("text/plain;;x-java-content-handler=_plain");
lcap(
"multipart/*;;x-java-content-handler=art_mixed;x-java-fallback-entry=true");
lcap("message/rfc822;;x-java-content-handler=e_rfc822");
aultCommandMap(mc);
tThread().setContextClassLoader(ssLoader());
}
/**
*发送邮件
*
*@return
*/
publicbooleansend()throwsException{
tent(mp);
anges();
n("正在发送邮件....");
solveError();
(mimeMsg);
n("发送邮件成功!");
returntrue;
}
}
3.4、测试类
;
;
;
publicclassEmailTest{
@Test
publicvoidsendEmail()throwsException{
StringuserName="1658633515@";//发件⼈邮箱
Stringpassword="************";//发件⼈密码,其实不⼀定是邮箱的登录密码,对于QQ邮箱来说是SMTP服务的授权⽂本
StringsmtpHost="";//邮件服务器
Stringto="3527824124@";//收件⼈,多个收件⼈以半⾓逗号分隔
Stringcc="2779653121@";//抄送,多个抄送以半⾓逗号分隔
Stringsubject="这是邮件的主题";//主题
Stringbody="这是邮件的正⽂";//正⽂,可以⽤html格式的哟
List
Emailemail=(smtpHost,userName,password,to,cc,subject,body,attachments);
();//发送!
}
}
更多推荐
gmail smtp
发布评论