由于客户需要,本人开始尝试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;
}
分享到:
相关推荐
压缩包中的“javaMain通过代理发送邮件.docx”文件很可能是提供了一个详细的实例或者教程,包含了如何在Java主程序中配置Spring Mail以通过代理发送邮件的代码和步骤。你可以打开这个文档,获取更具体的实现细节和...
文档详细描述,linux不通外网的情况下,通过在另一台通外网的服务器搭建socks5代理服务,不通外网的服务器通过socks5代理,成功向外网发送邮件的功能。
本文将深入探讨如何使用Java通过内容模板发送邮件,并支持附件功能。我们将基于给定的“Java通过内容模板发送邮件,支持附件”的项目进行讲解。 首先,这个项目可能使用了某种模板引擎,如FreeMarker或Velocity,来...
在Java编程领域,实现“java定时生成execl并发送邮件”的功能是一项常见的需求,尤其在自动化运维、数据报告和监控系统中。这个功能涉及到多个Java库和技术,包括Apache POI用于处理Excel文件,Quartz作为定时任务...
在Java编程中,发送带有模板的邮件是一项常见的任务,尤其对于企业级应用来说,通过电子邮件进行通知、报告或客户服务是必不可少的。JavaMail API提供了一种标准的方式来处理邮件的发送,而结合模板技术,我们可以...
本教程将深入讲解如何利用Java实现邮件的发送,并包含身份验证的过程,这对于自动化任务、通知系统或者任何需要通过电子邮件进行通信的应用来说是至关重要的。 首先,我们来了解计算机网络中的Socket编程。Socket是...
### Java定时发送邮件知识点解析 #### 一、Java发送邮件技术背景 在现代软件开发过程中,电子邮件服务常常作为系统的一部分,用于用户注册确认、密码重置通知、交易完成通知等多种场景。利用Java来实现自动定时...
在Java编程中,发送电子邮件是一项常见的任务,尤其在自动化通知、数据报告或者用户验证等场景中。本教程将深入探讨如何使用Java来配置Foxmail发送带有附件的邮件。首先,我们需要理解Java Mail API,它是Java中用于...
Java邮件发送组件是Java开发中用于发送电子邮件的工具,它使得开发者能够轻松地在应用程序中实现邮件功能。Java Mail API是实现这一功能的核心库,它提供了丰富的接口和类,允许程序进行邮件的创建、发送以及处理。...
综上所述,Java通过JavaMail API和Apache POI库可以实现电子邮件的发送、接收以及Excel文件的处理。在Spring框架中,这些功能可以更加方便地集成和管理,提高开发效率。通过编写相应的逻辑,你可以创建一个自动化...
Java微软邮箱使用MicrosoftGraph协议发送邮件
java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送
而Java Socket库则提供了实现SMTP客户端所需的基本功能,允许我们创建连接到SMTP服务器的套接字,并通过这个连接发送邮件。以下是一些关键知识点: 1. **Java Socket类**:Java的`java.net.Socket`类是网络通信的...
Java发送邮件小程序是一种常见的开发任务,它允许程序员通过编程方式发送电子邮件。在Java中,这一功能主要通过JavaMail API来实现。以下是对标题和描述中涉及的知识点的详细解释: 1. **JavaMail API**: JavaMail ...
3. 发件:当用户通过代理服务器发送邮件时,服务器会使用SMTP向目标邮件服务器发送邮件。JavaMail API同样在发送邮件时起到关键作用,它允许设置邮件头信息(如发件人、收件人、主题等)、添加附件,以及选择适当的...
JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,包括发送、接收、管理邮件等。本文将深入探讨如何使用JavaMail API在Java应用程序中实现发送邮件的功能,同时也会涉及验证码验证以及网页版...
在IT行业中,Exchange Web Services (EWS) API 是一种用于与Microsoft Exchange Server进行通信的编程接口,它允许开发者通过各种编程语言(如Java)来执行邮件管理、日历操作、联系人同步等任务。本教程将详细介绍...
Java中可以通过SMTP(Simple Mail Transfer Protocol)协议与Outlook服务器通信,然后利用JavaMail API来构造并发送这种类型的邮件。 JavaMail API是Java中用于处理电子邮件的核心库,它提供了发送、接收邮件等功能...
Java发送电子邮件是一个常见的任务,尤其在自动化通知、订阅服务或者数据传输等场景中。这个话题主要涉及JavaMail API和JavaBeans Activation Framework (JAF)。JavaMail API是用于处理电子邮件的Java库,而JAF则...