由于客户需要,本人开始尝试JAVA编码通过HTTP代理发送邮件。但一直出现“Sending the email to the following server failed : smtp.163.com:25”的异常错误。非常纠结,如果有高人看见这篇文章,请指点!
下面是具体实现方法:
public String sendMailByProxy(String mailHostName,String userName,String passWord,String sender,ArrayList recipientslist,ArrayList ccList,ArrayList bccList,String title,String content,ArrayList aFileAffixes,boolean delFile){
String ret = "0000发送成功";
try {
String proxyHost = ClientInfo.getClientComCfgPValue("mail.proxyHost",""); //代理服务器IP
String proxyPort = ClientInfo.getClientComCfgPValue("mail.proxyPort",""); //代理服务器端口
String checkUserPass = ClientInfo.getClientComCfgPValue("mail.checkUserAndPass","Y"); //是否验证用户名、密码
final String usernames = userName;
final String passwords = passWord;
//设置代理服务器
Properties props = System.getProperties();
props.setProperty("proxySet", "true");
props.setProperty("http.proxyHost", proxyHost);
props.setProperty("http.proxyPort", proxyPort);
props.setProperty("mail.smtp.host", mailHostName);
props.put("mail.smtp.auth", "true");
//使用验证
Session session = null;
if(checkUserPass == "Y" || "Y".equals(checkUserPass)){
session = Session.getInstance(props,
new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(usernames,
passwords);
}
});
}
HtmlEmail mail = new HtmlEmail();
mail.setMailSession(session);
mail.setFrom(sender); //发件人
ArrayList toList = getSplitArrayList(recipientslist);
if(toList!=null && toList.size()>0){
for(int i = 0; i < toList.size(); i++){
mail.addTo(toList.get(i).toString()); //收件人
}
}
ArrayList cList = getSplitArrayList(ccList);
if(cList!=null && cList.size()>0){
for(int i = 0; i < cList.size(); i++){
mail.addCc(cList.get(i).toString()); //抄送人
}
}
ArrayList bcList = getSplitArrayList(bccList);
if(bcList!=null && bcList.size()>0){
for(int i = 0; i < bcList.size(); i++){
mail.addBcc(bcList.get(i).toString()); //秘密抄送人
}
}
mail.setCharset("GB2312"); //邮件标题和内容中文转码
mail.setSubject(title); //标题
mail.setHtmlMsg("<p align="+"center"+"><b><u>"+content+"</u></b></p>"); //内容
if(aFileAffixes!=null && aFileAffixes.size()>0){
for(int i=0;i<aFileAffixes.size();i++){
String filePath = aFileAffixes.get(i).toString(); //附件路径(包括附件名)
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1); //附件名称
EmailAttachment att = new EmailAttachment(); //附件对象
att.setPath(filePath);
att.setDisposition(EmailAttachment.ATTACHMENT);
att.setDescription(fileName);
att.setName(MimeUtility.encodeText(fileName)); //将附件名称进行转码(以防中文名称导致乱码)
mail.attach(att); //附件
}
}
mail.send();
if(delFile){
if(aFileAffixes!=null){
for(int i=0;i<aFileAffixes.size();i++){
File f = new File(aFileAffixes.get(i).toString());
if(f.isFile()){
f.delete();
}
}
}
}
} catch (Exception err) {
err.printStackTrace();
ret = "9999Email发送异常["+err.getMessage()+"]";
if(delFile){
if(aFileAffixes!=null){
for(int i=0;i<aFileAffixes.size();i++){
File f = new File(aFileAffixes.get(i).toString());
if(f.isFile()){
f.delete();
}
}
}
}
}
return ret;
}
分享到:
相关推荐
Java socket 代理邮件发送程序,测试无问题,才敢上传!
文档详细描述,linux不通外网的情况下,通过在另一台通外网的服务器搭建socks5代理服务,不通外网的服务器通过socks5代理,成功向外网发送邮件的功能。
java发送邮件工具类,用于java程序实现邮件的发送功能
java 发送邮件 spring发送邮件Mail
java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件
java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个...
JAVA后台自动发送邮件,可根据需要修改服务器,赋值代码,加载jar包即可实现
java定时发送邮件java定时发送邮件java定时发送邮件java定时发送邮件java定时发送邮件java定时发送邮件java定时发送邮件
Java发送邮件,亲自测试,没有问题。目前支持简单Java邮件发送!
基于Java的邮件发送模板
java发邮件
Java发送outlook邮件,也可发送notes邮件
java 通过163端口发送邮件 163设置里打开 POP3/SMTP/IMAP否则发送不了
java邮件发送组件,邮件群发组件java邮件发送组件,邮件群发组件java邮件发送组件,邮件群发组件java邮件发送组件,邮件群发组件java邮件发送组件,邮件群发组件
通过javaxmaill,poi,quartz等技术实现了生成execl并定时发送邮件,在巡检中实现了定时任务,为不同的负责人发送不同的内容
图文并茂邮件实现、普通邮件发送演示、带附件的邮件发送的源码以及编写时所参考的相关资料和大家分享一下!
JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。
java实现的根据html模版内容发送邮件,这是一个完整的eclipse项目,包含jar包,导入即可运行
Java发送带模版的邮件示例,可以参考一下,用自己的模版发送漂亮的邮件
java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送