Java远程调用邮件服务器,实现邮件…
来源:互联网 发布:淘宝海外版网址 编辑:程序博客网 时间:2024/05/26 19:20
邮件服务器使用的Apache的James,Java写的开源的,而且方便调用。远程调用使用的是Java Mail的API。
首先我们需要把James这个邮件服务器跑起来,官网下载地址:http://james.apache.org/,下载先来之后直接解压,直接运行bin\run.bat。出现如下图所示说明运行OK了。
如果运行不成功,可能是你的JDK或者环境变量没有配置好,这个我就不说了。
运行起来之后,会在apps\james\SAR-INF这个目录下生成一个config.xml文件,这就是邮件服务器的配置文件。打开它,修改一些配置:
1.修改localhost,改成你自己的服务器域名,比如:support@zhangyuan123.com
2.修改这些,也是改成自己的
3.修改dnsserver,这是为了可以发外网邮件,查看DNS地址使用ipconfig/all,然后在配置文件中dnsserver节点下加入server地址,比如:
- <</span>dnsserver>
-
<</span>servers> -
-
-
-
<</span>server>114.114.114.114</</span>server> -
<</span>server>8.8.8.8</</span>server> -
</</span>servers> -
-
-
<</span>autodiscover>false</</span>autodiscover> -
<</span>authoritative>false</</span>authoritative> -
-
-
<</span>maxcachesize>50000</</span>maxcachesize> -
</</span>dnsserver>
重新启动邮件服务器。
下面就添加一个用户到邮件服务器,James是使用telnet进行命令行操作的。win7默认没有打开telnet服务,可以搜一下如何打开。然后在命令行输入telnet
添加完了之后我们就开始使用客户端模仿调用服务器发送一封邮件。
- package
org.sunchao; -
- import
java.io.IOException; - import
java.util.Properties; -
- import
javax.mail.Authenticator; - import
javax.mail.Folder; - import
javax.mail.Message; - import
javax.mail.MessagingException; - import
javax.mail.PasswordAuthentication; - import
javax.mail.Session; - import
javax.mail.Store; - import
javax.mail.internet.InternetAddress; - import
javax.mail.internet.MimeMessage; - import
javax.mail.internet.MimeUtility; -
- public
class Mail { -
// String host = "smtp.163.com"; // 163的smtp服务器 -
// 本机smtp服务器 -
private static final String "zhangyuan123.com";HOST = -
// 邮件发送人的邮件地址 -
private static final String "admin@"FROM = + HOST; -
// 邮件接收人的邮件地址 -
private static final String "test@qq.com";TO = -
// 发件人的邮件帐户 -
private static final String "admin";USERNAME = -
// 发件人的邮件密码 -
private static final String "admin";PASSWORD = -
-
public static void main(String[] args) { -
Mail.sendMail(); -
// Mail.getMail(); -
} -
-
-
public static void sendMail() { -
// 创建Properties 对象 -
Properties props = System.getProperties(); -
// 添加smtp服务器属性 -
props.put("mail.smtp.host", HOST); -
props.put("mail.smtp.auth", "true"); -
-
// 创建邮件会话 -
Session session = Session.getDefaultInstance(props, -
new Authenticator() { -
@Override -
public PasswordAuthentication getPasswordAuthenticatio n() { -
return new PasswordAuthentication(USERNAME, PASSWORD); -
} -
}); -
try { -
// 定义邮件信息 -
MimeMessage message = new MimeMessage(session); -
message.setFrom(new InternetAddress(FROM)); -
message.addRecipient(Message.RecipientType.TO, new InternetAddress( -
TO)); -
message.setSubject("I hava );my own mail server" -
message -
.setText("From now, );you have your own mail server, congratulation!" -
// 发送消息 -
session.getTransport("smtp").send(message); -
// Transport.send(message); //也可以这样创建Transport对象发送 -
System.out.println("SendMail Process );Over!" -
} catch (MessagingException e) { -
e.printStackTrace(); -
} -
} -
-
-
public static void getMail() { -
String host = "localhost"; -
final String "admin";username = -
final String "admin";password = -
// 创建Properties 对象 -
Properties props = new Properties(); -
-
// 创建邮件会话 -
Session session = Session.getDefaultInstance(props, -
new Authenticator() { -
@Override -
public PasswordAuthentication getPasswordAuthenticatio n() { -
return new PasswordAuthentication(username, password); -
} -
}); -
try { -
// 获取邮箱的pop3存储 -
Store store = session.getStore("pop3"); -
store.connect(host, username, password); -
// 获取inbox文件 -
Folder folder = store.getFolder("INBOX"); -
folder.open(Folder.READ_ONLY); // 打开,打开后才能读取邮件信息 -
// 获取邮件消息 -
Message message[] = folder.getMessages(); -
for ( inti 0,= n = message.length; i < n; i++) { -
System.out.println(i + ": " + 0]message[i].getFrom()[ + "\t" -
+ message[i].getSubject()); -
try { -
message[i].writeTo(System.out); -
} catch (IOException e) { -
e.printStackTrace(); -
} -
} -
// 关闭资源 -
folder.close(false); -
store.close(); -
} catch (MessagingException e) { -
e.printStackTrace(); -
} -
System.out.println("GetMail Process );Over!" -
} -
-
// 邮件主题中文字符转换 -
public static String transferChinese(String strText) { -
try { -
strText = MimeUtility.encodeText(new String(strText.getBytes(), -
"GB2312"), "GB2312", "B"); -
} catch (Exception ex) { -
ex.printStackTrace(); -
} -
return strText; -
} - }
添加域名白名单:
再发每一次,QQ邮箱就可以收到了。
对于腾讯的过滤,如果不让他过滤,我估计得交钱给腾讯了,其他的163的,新浪的大家也可以试一下。
转至:http://blog.csdn.net/sunchaoenter/article/details/9280815
- Java远程调用邮件服务器,实现邮件…
- Java远程调用邮件服务器,实现邮件发送
- Java远程调用邮件服务器,实现邮件发送
- Java远程调用邮件服务器,实现邮件发送
- Java调用阿里SMTP服务器实现邮件发送
- java实现SMTP邮件服务器
- java实现SMTP邮件服务器
- 使用php mailer类调用远程SMTP服务器发送邮件
- 命令行远程登录邮件服务器
- java邮件接口调用
- java 用gmail邮件服务器 发送邮件
- java实现邮件发送
- java实现邮件发送
- java 实现发送邮件
- java 实现邮件发送
- java发送邮件实现
- Java实现发送邮件
- Java 实现邮件发送
- POJ 3617 Best Cow Line(贪心)
- Android智能事件触发器---ApkViewT…
- 职业选择的秘诀
- 异步收发数据socket实战
- Bat命令学习
- Java远程调用邮件服务器,实现邮件…
- 推荐十款推荐十款超赞的Google&nbs…
- Eclipse插件收藏列表(1)
- 微博缩短网址是如何实现的
- 魔声monster - 耳机-煲耳机-方法
- Facebook反思HTML5技术
- struts2的action从request获取参数值的几种方式【转】
- 如何进行电子邮件营销与推广
- 从南极之争谈软件架构十个技巧,及…