java gmail 发送邮件_使用JavaMail对Gmail进行邮件收发

进行JavaMail 收发邮件,必须导入2个Jar包 Mail.Jar Activation.Jar

//利用JavaMail收/发Gmail邮件(SSL)

//Gmail目前已经启用了POP3和SMTP服务

//与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,

//下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:

//1. 邮件收取

package zjk.javamail;

import java.io.UnsupportedEncodingException;

import java.security.*;

import java.util.Properties;

import javax.mail.*;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeUtility;

/**

* 用于收取Gmail邮件

*

* @author Winter Lau

*/

public class GmailFetch {

public static void main(String argv[]) throws Exception {

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

// Get a Properties object

Properties props = System.getProperties();

props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);

props.setProperty("mail.pop3.socketFactory.fallback", "false");

props.setProperty("mail.pop3.port", "995");

props.setProperty("mail.pop3.socketFactory.port", "995");

// 以下步骤跟一般的JavaMail操作相同

Session session = Session.getDefaultInstance(props, null);

// 请填写你的邮箱帐号和密码

URLName urln = new URLName("pop3", "pop.gmail.com", 995, null,

"【你的邮箱账号,如:zhangjiankun880@gmail.com】", "【你的密码】");

Store store = session.getStore(urln);

Folder inbox = null;

try {

store.connect();

inbox = store.getFolder("INBOX");

inbox.open(Folder.READ_ONLY);

FetchProfile profile = new FetchProfile();

profile.add(FetchProfile.Item.ENVELOPE);

Message[] messages = inbox.getMessages();

inbox.fetch(messages, profile);

System.out.println("收件箱的邮件数:" + messages.length);

for (int i = 0; i < messages.length; i++) {

// 邮件发送者

String from = decodeText(messages[i].getFrom()[0].toString());

InternetAddress ia = new InternetAddress(from);

System.out.println("FROM:" + ia.getPersonal() + '('

+ ia.getAddress() + ')');

// 邮件标题

System.out.println("TITLE:" + messages[i].getSubject());

// 邮件大小

System.out.println("SIZE:" + messages[i].getSize());

// 邮件发送时间

System.out.println("DATE:" + messages[i].getSentDate());

}

} finally {

try {

inbox.close(false);

} catch (Exception e) {

}

try {

store.close();

} catch (Exception e) {

}

}

}

protected static String decodeText(String text)

throws UnsupportedEncodingException {

if (text == null)

return null;

if (text.startsWith("=?GB") || text.startsWith("=?gb"))

text = MimeUtility.decodeText(text);

else

text = new String(text.getBytes("ISO8859_1"));

return text;

}

}

//2. 发送邮件

package zjk.javamail;

import java.security.Security;

import java.util.Date;

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

/**

* 使用Gmail发送邮件

*

* @author Winter Lau

*/

public class GmailSender {

public static void main(String[] args) throws AddressException,

MessagingException {

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

// Get a Properties object

Properties props = System.getProperties();

props.setProperty("mail.smtp.host", "smtp.gmail.com");

props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);

props.setProperty("mail.smtp.socketFactory.fallback", "false");

props.setProperty("mail.smtp.port", "465");

props.setProperty("mail.smtp.socketFactory.port", "465");

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

final String username = "【你的邮箱账号,如:zhangjiankun880@gmail.com】";

final String password = "【你的密码】";

Session session = Session.getDefaultInstance(props,

new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(username, password);

}

});

// -- Create a new message --

Message msg = new MimeMessage(session);

// -- Set the FROM and TO fields --

msg.setFrom(new InternetAddress(username));

msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(

"【收件人的账号】", false));

msg.setSubject("Hello");

msg.setText("How are you");

msg.setSentDate(new Date());

Transport.send(msg);

System.out.println("Message sent.");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当需要在邮件正文中嵌入图片时,可以使用HTML格式的邮件,并在HTML中嵌入图片的URL。下面是使用JavaMail发送包含图片的HTML格式邮件的详细步骤: 1. 导入JavaMailjavax.activation库。 2. 创建一个MimeMessage对象。 3. 设置邮件的基本信息,包括发件人、收件人、主题等。 4. 创建一个Multipart对象,用于组合邮件正文和图片。 5. 创建一个HTML格式的邮件正文。 6. 创建一个MimeBodyPart对象,用于包装图片。 7. 将图片附件添加到MimeBodyPart对象中。 8. 将MimeBodyPart对象添加到Multipart对象中。 9. 将Multipart对象设置为邮件内容。 10. 发送邮件。 下面是一份示例代码,可以参考: ```java import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class SendMailWithImage { public static void main(String[] args) { // 发件人电子邮箱 String from = "from@example.com"; // 收件人电子邮箱 String to = "to@example.com"; // 指定发送邮件的主机为 smtp.qq.com String host = "smtp.qq.com"; //QQ 邮件服务器 // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); // 获取默认session对象 Session session = Session.getDefaultInstance(properties, new Authenticator(){ public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("你的QQ账号", "你的QQ邮箱授权码"); //发件人邮件用户名、密码 } }); try{ // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头部头字段 message.setSubject("包含图片的邮件"); // 创建消息部分 BodyPart messageBodyPart = new MimeBodyPart(); // 消息 String messageText = "<h1>这是一封包含图片的HTML格式邮件!</h1><br/><img src=\"cid:image\">"; messageBodyPart.setContent(messageText, "text/html"); // 创建多重消息 Multipart multipart = new MimeMultipart(); // 设置文本消息部分 multipart.addBodyPart(messageBodyPart); // 附件部分 messageBodyPart = new MimeBodyPart(); String filename = "image.png"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setHeader("Content-ID", "<image>"); multipart.addBodyPart(messageBodyPart); // 发送合成消息 message.setContent(multipart); // 发送消息 Transport.send(message); System.out.println("邮件发送成功!"); }catch (MessagingException mex) { mex.printStackTrace(); } } } ``` 其中,需要替换的部分有: - `from@example.com` 为发件人邮箱地址。 - `to@example.com` 为收件人邮箱地址。 - `smtp.qq.com` 为发件人邮箱SMTP服务器地址,可以根据实际情况进行修改。 - `你的QQ账号` 和 `你的QQ邮箱授权码` 分别为发件人邮箱的账号和授权码,需要替换为实际的内容。 - `image.png` 为要添加的图片文件名,需要替换为实际的图片文件名。 运行程序后,将会发送一封包含图片的HTML格式邮件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值