java邮件程序_【Java邮件开发】5.编写一个JavaMail发送邮件的程序

之前我们对JavaMail的API进行了简单的介绍,并下载了相应的jar包。

这次,我们要着手使用JavaMail开发一个可以发送邮件的程序。

1.创建工程

首先我们在Eclipse中新建一个名为JavaMailTest的工程:

0b6378043279629be47acf8d147842c2.png

2dcbb36810bb47112597f3010427f97e.png

然后我们新建一个lib文件夹,将mail.jar放入文件夹中,然后右键选择

Build Path-->add to build path将其引入开发环境中:

bf42d4b510295a63e7766202a6f89221.png

在工程中新建一个位于cn.com.javamail包下的类,名为JavaMailTest1:

0f08c8087ac33f87013aaaf60677c50b.png

2.编写代码

我们在JavaMailTest1类中创建一个main函数:

package cn.com.javamail;

public class JavaMailTest1 {

public static void main(String[] args) {

}

}

我们要编写发送邮件的程序,就必须先创建一封邮件,我们来编写创建邮件

信息的代码。

使用JavaMail发送一封简单邮件的步骤:

(1)创建代表邮件服务器的网络连接信息的Session对象。

(2)创建代表邮件内容的Message对象

(3)创建Transport对象、连接服务器、发送Message、关闭连接。

我们的代码编写如下:

package cn.com.javamail;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class JavaMailTest1 {

public static int ReceivedCount=1;//接收邮件地址的数组大小

public static void main(String[] args) throws MessagingException {

//1.创建信息配置对象,并配置相应信息

Properties props = new Properties();

//属性mail.debug是确定是否是开发模式,true为是,false为否

//属性mail.transport.protocol设置要使用的邮件协议

//属性mail.smtp.auth设置发送时是否校验用户名和密码

//还有其他属性,请查看相关文档

props.setProperty("mail.debug", "true");

props.setProperty("mail.transport.protocol", "smtp");

props.setProperty("mail.smtp.auth", "true");

//2.通过配置信息创建session对像

Session session = Session.getInstance(props);

//session设置dbug的时候会将整个邮件交互过程信息打印早控制台

session.setDebug(true);

//3.通过session对象获取Message邮件信息对象

Message msg = new MimeMessage(session);

//设置邮件信息对象的各种字段信息

msg.setText("你好朋友!");//邮件正文

msg.setFrom(new InternetAddress("[email protected]"));//邮件接收地址

//3.获取传输对象,进行邮件发送

Transport transport= session.getTransport();

//连接信息:邮件服务器地址,端口号,用户名,密码

transport.connect("smtp.sina.com",25,"emailtest3087", "123qwe");

//创建邮件接收地址数组,并放置一个邮箱接收地址。

Address [] addresies=new Address[ReceivedCount];//数组大小为上面的成员变量指定

addresies[0]=new InternetAddress("[email protected]");

transport.sendMessage(msg,addresies);

//4.关闭传输对象

transport.close();//关闭传输对象

}

}

运行结果:

DEBUG: JavaMail version 1.4.7

DEBUG: successfully loaded resource: /META-INF/javamail.default.providers

DEBUG: Tables of loaded providers

DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}

DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}

DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map

DEBUG: setDebug: JavaMail version 1.4.7

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]

DEBUG SMTP: useEhlo true, useAuth true

DEBUG SMTP: trying to connect to host "smtp.sina.com", port 25, isSSL false

220 smtp-2-32.smtpsmail.fmail.yf.sinanode.com ESMTP

DEBUG SMTP: connected to host "smtp.sina.com", port: 25

EHLO LAPTOP-79JCNN74

250-smtp-2-32.smtpsmail.fmail.yf.sinanode.com

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-STARTTLS

250 8BITMIME

DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"

DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"

DEBUG SMTP: Found extension "STARTTLS", arg ""

DEBUG SMTP: Found extension "8BITMIME", arg ""

DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM

DEBUG SMTP: AUTH LOGIN command trace suppressed

DEBUG SMTP: AUTH LOGIN succeeded

DEBUG SMTP: use8bit false

MAIL FROM:250 ok

RCPT TO:250 ok

DEBUG SMTP: Verified Addresses

DEBUG SMTP: [email protected]

DATA

354 End data with .From: [email protected]

Message-ID: <1311159931.0.1492350927193.JavaMail."wuliII"@LAPTOP-79JCNN74>

MIME-Version: 1.0

Content-Type: text/plain; charset=GBK

Content-Transfer-Encoding: base64

xOO6w8Xz09GjoQ==

.

250 ok queue id 249384396005

QUIT

221 smtp-2-32.smtpsmail.fmail.yf.sinanode.com

分析结果:

其中,我们可以看到,程序首先连接了位于25号端口的sina的SMTP服务器:

DEBUG SMTP: trying to connect to host "smtp.sina.com", port 25, isSSL false

220 smtp-2-32.smtpsmail.fmail.yf.sinanode.com ESMTP

DEBUG SMTP: connected to host "smtp.sina.com", port: 25

然后进行了auth验证,验证了用户名和密码是否正确:

DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM

DEBUG SMTP: AUTH LOGIN command trace suppressed

DEBUG SMTP: AUTH LOGIN succeeded

通过succeeded可以看到连接是通过的。然后就是组装邮件信息:

MAIL FROM:250 ok

RCPT TO:250 ok

DEBUG SMTP: Verified Addresses

DEBUG SMTP:   [email protected]

DATA

354 End data with .From: [email protected]

Message-ID: <1311159931.0.1492350927193.JavaMail."wuliII"@LAPTOP-79JCNN74>

MIME-Version: 1.0

Content-Type: text/plain; charset=GBK

Content-Transfer-Encoding: base64

之后成功发送邮件,并推出发送邮箱:

250 ok queue id 249384396005

QUIT

我们登录126邮箱,看一下我们是否收到邮件:

93c15c0f16e35db1135b3620b0ea3556.png

发现邮件成功投递到我们的126测试邮箱!

至此,我们的入门级JavaMail发送邮件的程序就编写完毕了。

转载请注明出处:http://blog.csdn.net/acmman/article/details/71322492

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值