JAVA 发邮件,java发邮件邮箱

hacker2年前黑客服务93

怎样用java发送邮件

首先下载 JavaMail jar 包,并导入到项目中。下载地址

编写代码,代码如下:

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;

public class App45 {

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

Properties properties = System.getProperties();

properties.setProperty("mail.smtp.host", "邮件发送服务器");

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

Session session = Session.getDefaultInstance(properties, new Authenticator() {

@Override

protected PasswordAuthentication getPasswordAuthentication() {

// 设置发件人邮件帐号和密码

return new PasswordAuthentication("邮件帐号", "密码");

}

});

MimeMessage message = new MimeMessage(session);

// 设置发件人邮件地址

message.setFrom(new InternetAddress("发件人邮件地址"));

// 设置收件人邮件地址

message.addRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮件地址"));

message.setSubject("这里是邮件主题。");

message.setText("这里是邮件内容。");

Transport.send(message);

}

}

如何使用Java发送qq邮件

方法:

1.前提准备工作:

首先,邮件的发送方要开启POP3 和SMTP服务--即发送qq邮件的账号要开启POP3 和SMTP服务

2.开启方法:

登陆qq邮箱

3.点击 设置

4.点击—-账户

5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 —点击开启

6.送短信 —–点击确定

7.稍等一会,很得到一个授权码! –注意:这个一定要记住,一会用到

8.点击保存修改 —OK 完成

9.java 测试代码:

package cn.cupcat.test;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

public class SendmailUtil {

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

Properties properties = new Properties();

properties.put("mail.transport.protocol", "smtp");// 连接协议

properties.put("mail.smtp.host", "smtp.qq.com");// 主机名

properties.put("mail.smtp.port", 465);// 端口号

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

properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用

properties.put("mail.debug", "true");//设置是否显示debug信息 true 会在控制台显示相关信息

//得到回话对象

Session session = Session.getInstance(properties);

// 获取邮件对象

Message message = new MimeMessage(session);

//设置发件人邮箱地址

message.setFrom(new InternetAddress("123456789@qq.com"));

//设置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("987654321@qq.com") });

//设置邮件标题

message.setSubject("这是第一封Java邮件");

//设置邮件内容

message.setText("内容为: 这是第一封java发送来的邮件。");

//得到邮差对象

Transport transport = session.getTransport();

//连接自己的邮箱账户

transport.connect("123456789@qq.com", "vvctybgbvvophjcj");//密码为刚才得到的授权码

//发送邮件 transport.sendMessage(message, message.getAllRecipients());

}

}

10.运行就会发出邮件了。。。。

下面是我收到邮件的截图,当然我把源码中的邮件地址都是修改了,不是真实的,你们测试的时候,可以修改能你们自己的邮箱。最后,祝你也能成功,如果有什么问题,可以一起讨论!

注意事项

得到的授权码一定要保存好,程序中要使用

如何用java实现发邮件功能,并有几点注意事项

package com.victor;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;

public class JavaMailWithAttachment {

    private MimeMessage message;

    private Session session;

    private Transport transport;

    private String mailHost = "";

    private String sender_username = "";

    private String sender_password = "";

    private Properties properties = new Properties();

    /*

     * 初始化方法

     */

    public JavaMailWithAttachment(boolean debug) {

        InputStream in = JavaMailWithAttachment.class.getResourceAsStream("/MailServer.properties");

        try {

            properties.load(in);

            this.mailHost = properties.getProperty("mail.smtp.host");

            this.sender_username = properties.getProperty("mail.sender.username");

            this.sender_password = properties.getProperty("mail.sender.password");

        } catch (IOException e) {

            e.printStackTrace();

        }

        

        session = Session.getInstance(properties);

        session.setDebug(debug);//开启后有调试信息

        message = new MimeMessage(session);

    }

    /**

     * 发送邮件

     * 

     * @param subject

     *            邮件主题

     * @param sendHtml

     *            邮件内容

     * @param receiveUser

     *            收件人地址

     * @param attachment

     *            附件

     */

    public void doSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) {

        try {

            // 发件人

            InternetAddress from = new InternetAddress(sender_username);

            message.setFrom(from);

            // 收件人

            InternetAddress to = new InternetAddress(receiveUser);

            message.setRecipient(Message.RecipientType.TO, to);

            // 邮件主题

            message.setSubject(subject);

            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

            Multipart multipart = new MimeMultipart();

            

            // 添加邮件正文

            BodyPart contentPart = new MimeBodyPart();

            contentPart.setContent(sendHtml, "text/html;charset=UTF-8");

            multipart.addBodyPart(contentPart);

            

            // 添加附件的内容

            if (attachment != null) {

                BodyPart attachmentBodyPart = new MimeBodyPart();

                DataSource source = new FileDataSource(attachment);

                attachmentBodyPart.setDataHandler(new DataHandler(source));

                

                // 网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定

                // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

                //sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

                //messageBodyPart.setFileName("=?GBK?B?" + enc.encode(attachment.getName().getBytes()) + "?=");

                

                //MimeUtility.encodeWord可以避免文件名乱码

                attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));

                multipart.addBodyPart(attachmentBodyPart);

            }

            

            // 将multipart对象放到message中

            message.setContent(multipart);

            // 保存邮件

            message.saveChanges();

            transport = session.getTransport("smtp");

            // smtp验证,就是你用来发邮件的邮箱用户名密码

            transport.connect(mailHost, sender_username, sender_password);

            // 发送

            transport.sendMessage(message, message.getAllRecipients());

            System.out.println("send success!");

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            if (transport != null) {

                try {

                    transport.close();

                } catch (MessagingException e) {

                    e.printStackTrace();

                }

            }

        }

    }

    public static void main(String[] args) {

        JavaMailWithAttachment se = new JavaMailWithAttachment(true);

        System.out.println(se);

        File affix = new File("E:\\测试-test.txt");

      //  File affix =null;

        se.doSendHtmlEmail("##", "###", "####@##.com", affix);//

    }

}

注意点:1 jar可能有冲突,如果是demo可以直接应用mail.jar

如果是一个工程则要替换javaEE中的mail.jar包

2 关于properties配置文件的地址问题

Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从

ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。

java中如何实现公司邮箱发送邮件配置

Java中可以通过Javamail API实现公司邮箱邮件发送配置,Java mail是利用现有的邮箱账户发送邮件的工具,具体步骤如如下:

1、通过JavamailAPI设置发送者邮箱用户名及密码

2、通过JavamailAPI设置邮件主题、邮件内容、附件及邮件发送时间

3、通过JavamailAPI设置发送者邮箱地址及接收者邮箱地址,接收者地址可以是多个及抄送

4、邮件的需基本元素都设置完毕后,即可通过Javamail API的发送接口执行发送操作。

java 发送邮件

原因:

MyEclipse的javaee.jar中的mail包与JavaMail包有冲突。

解决:

在MyEclipse目录下,找javaee.jar包,用WinRar打包,删除里面的mail目录和activation目录然后加入mail.jar和activition.jar

java 怎么实现发送邮件例子

第一个类:MailSenderInfo.java

[java] view plain copy

package com.util.mail;

/**

* 发送邮件需要使用的基本信息

*author by wangfun

小说520

*/

import java.util.Properties;

public class MailSenderInfo {

// 发送邮件的服务器的IP和端口

private String mailServerHost;

private String mailServerPort = "25";

// 邮件发送者的地址

private String fromAddress;

// 邮件接收者的地址

private String toAddress;

// 登陆邮件发送服务器的用户名和密码

private String userName;

private String password;

// 是否需要身份验证

private boolean validate = false;

// 邮件主题

private String subject;

// 邮件的文本内容

private String content;

// 邮件附件的文件名

private String[] attachFileNames;

/**

* 获得邮件会话属性

*/

public Properties getProperties(){

Properties p = new Properties();

p.put("mail.smtp.host", this.mailServerHost);

p.put("mail.smtp.port", this.mailServerPort);

p.put("mail.smtp.auth", validate ? "true" : "false");

return p;

}

public String getMailServerHost() {

return mailServerHost;

}

public void setMailServerHost(String mailServerHost) {

this.mailServerHost = mailServerHost;

}

public String getMailServerPort() {

return mailServerPort;

}

public void setMailServerPort(String mailServerPort) {

this.mailServerPort = mailServerPort;

}

public boolean isValidate() {

return validate;

}

public void setValidate(boolean validate) {

this.validate = validate;

}

public String[] getAttachFileNames() {

return attachFileNames;

}

public void setAttachFileNames(String[] fileNames) {

this.attachFileNames = fileNames;

}

public String getFromAddress() {

return fromAddress;

}

public void setFromAddress(String fromAddress) {

this.fromAddress = fromAddress;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getToAddress() {

return toAddress;

}

public void setToAddress(String toAddress) {

this.toAddress = toAddress;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String textContent) {

this.content = textContent;

}

}

第二个类:SimpleMailSender.java

[java] view plain copy

package com.util.mail;

import java.util.Date;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

/**

* 简单邮件(不带附件的邮件)发送器

BT下载

*/

public class SimpleMailSender {

/**

* 以文本格式发送邮件

* @param mailInfo 待发送的邮件的信息

*/

public boolean sendTextMail(MailSenderInfo mailInfo) {

// 判断是否需要身份认证

MyAuthenticator authenticator = null;

Properties pro = mailInfo.getProperties();

if (mailInfo.isValidate()) {

// 如果需要身份认证,则创建一个密码验证器

authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());

}

// 根据邮件会话属性和密码验证器构造一个发送邮件的session

Session sendMailSession = Session.getDefaultInstance(pro,authenticator);

try {

// 根据session创建一个邮件消息

Message mailMessage = new MimeMessage(sendMailSession);

// 创建邮件发送者地址

Address from = new InternetAddress(mailInfo.getFromAddress());

// 设置邮件消息的发送者

mailMessage.setFrom(from);

// 创建邮件的接收者地址,并设置到邮件消息中

Address to = new InternetAddress(mailInfo.getToAddress());

mailMessage.setRecipient(Message.RecipientType.TO,to);

// 设置邮件消息的主题

mailMessage.setSubject(mailInfo.getSubject());

// 设置邮件消息发送的时间

mailMessage.setSentDate(new Date());

// 设置邮件消息的主要内容

String mailContent = mailInfo.getContent();

mailMessage.setText(mailContent);

// 发送邮件

Transport.send(mailMessage);

return true;

} catch (MessagingException ex) {

ex.printStackTrace();

}

return false;

}

/**

* 以HTML格式发送邮件

* @param mailInfo 待发送的邮件信息

*/

public static boolean sendHtmlMail(MailSenderInfo mailInfo){

// 判断是否需要身份认证

MyAuthenticator authenticator = null;

Properties pro = mailInfo.getProperties();

//如果需要身份认证,则创建一个密码验证器

if (mailInfo.isValidate()) {

authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());

}

// 根据邮件会话属性和密码验证器构造一个发送邮件的session

Session sendMailSession = Session.getDefaultInstance(pro,authenticator);

try {

// 根据session创建一个邮件消息

Message mailMessage = new MimeMessage(sendMailSession);

// 创建邮件发送者地址

Address from = new InternetAddress(mailInfo.getFromAddress());

// 设置邮件消息的发送者

mailMessage.setFrom(from);

// 创建邮件的接收者地址,并设置到邮件消息中

Address to = new InternetAddress(mailInfo.getToAddress());

// Message.RecipientType.TO属性表示接收者的类型为TO

mailMessage.setRecipient(Message.RecipientType.TO,to);

// 设置邮件消息的主题

mailMessage.setSubject(mailInfo.getSubject());

// 设置邮件消息发送的时间

mailMessage.setSentDate(new Date());

// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象

Multipart mainPart = new MimeMultipart();

// 创建一个包含HTML内容的MimeBodyPart

BodyPart html = new MimeBodyPart();

// 设置HTML内容

html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");

mainPart.addBodyPart(html);

// 将MiniMultipart对象设置为邮件内容

mailMessage.setContent(mainPart);

// 发送邮件

Transport.send(mailMessage);

return true;

} catch (MessagingException ex) {

ex.printStackTrace();

}

return false;

}

}

第三个类:MyAuthenticator.java

[java] view plain copy

package com.util.mail;

import javax.mail.*;

public class MyAuthenticator extends Authenticator{

String userName=null;

String password=null;

public MyAuthenticator(){

}

public MyAuthenticator(String username, String password) {

this.userName = username;

this.password = password;

}

protected PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(userName, password);

}

}

下面给出使用上面三个类的代码:

[java] view plain copy

public static void main(String[] args){

//这个类主要是设置邮件

MailSenderInfo mailInfo = new MailSenderInfo();

mailInfo.setMailServerHost("smtp.163.com");

mailInfo.setMailServerPort("25");

mailInfo.setValidate(true);

mailInfo.setUserName("han2000lei@163.com");

mailInfo.setPassword("**********");//您的邮箱密码

mailInfo.setFromAddress("han2000lei@163.com");

mailInfo.setToAddress("han2000lei@163.com");

mailInfo.setSubject("设置邮箱标题 如 中国桂花网");

mailInfo.setContent("设置邮箱内容 如 中国桂花网 是中国最大桂花网站==");

//这个类主要来发送邮件

SimpleMailSender sms = new SimpleMailSender();

sms.sendTextMail(mailInfo);//发送文体格式

sms.sendHtmlMail(mailInfo);//发送html格式

}

最后,给出朋友们几个注意的地方:

1、使用此代码你可以完成你的javamail的邮件发送功能。三个类缺一不可。

2、这三个类我打包是用的com.util.mail包,如果不喜欢,你可以自己改,但三个类文件必须在同一个包中

3、不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用“smtp.163.com”。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。

4、另一个问题就是mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("han2000lei@163.com");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。

5、关于javamail验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码,我想是不会有问题的。

相关文章

网卡绿色邮箱是什么意思啊,网卡绿色邮箱是什么意思

网卡绿色邮箱是什么意思啊,网卡绿色邮箱是什么意思

绿色邮箱是什么? 如果您是河南联通用户,通常绿色邮箱是指沃邮箱中的一种,是指4G专享版绿色邮箱,5元/月(长期减免),您可通过以下方式办理退订:【1】短信退订:发送短信TD到10655516,退订沃邮...

使命召唤港澳台官网,使命召唤港澳台邮箱

使命召唤港澳台官网,使命召唤港澳台邮箱

使命召唤战区注册及客户端设置方法有操作步骤么,求解决 《使命召唤:战区》是动视推出的全新吃鸡游戏模式,游戏是免费的,但是暴雪国服客户端却不支持,大概是因为审核的问题,无法在国区上架。但是通过一些手段,...

用邮箱注册的淘宝账号怎么找回,怎么找回邮箱账户淘宝

用邮箱注册的淘宝账号怎么找回,怎么找回邮箱账户淘宝

淘宝账号被盗怎么办? 淘宝账户被盗,用户信息被修改,可以直接在首页登录这里点忘记密码。进行密码重置,通过密保问题、密保手机验证、快捷银行卡验证、人工服务审核等方式可以将帐号重新找回。找回账户步骤:1、...

电脑是怎么发邮箱的呢,电脑是怎么发邮箱的

电脑是怎么发邮箱的呢,电脑是怎么发邮箱的

用电脑怎么发邮件 若用Windows10系统的华为、华硕等品牌的电脑发送QQ邮件、网易邮件等,要先打开浏览器,输入QQ邮箱或网易邮箱点击搜索,进入官网后选择登录,登录成功后点击写信,然后根据页面提示选...

拧紧油箱盖时响几声,邮箱盖拧紧了有响声

拧紧油箱盖时响几声,邮箱盖拧紧了有响声

怎么判断油箱盖拧紧了 正常情况下,如果密封圈良好,在拧油箱盖的时候,会听到咔咔几声响,那是因为碰到了卡槽,此时就是拧紧的状态。但如果密封圈有问题的话,拧油箱盖的时候就算出现了咔咔两三声的响声,行车过程...

怎样没邮箱,如果不看邮箱

怎样没邮箱,如果不看邮箱

WOW别人发邮件,如果不看,会在几天之后清空 1、如果在30天内未取出《魔兽世界》的电子邮件,该物品将被删除。如果是发件人写的信,则30天后将退还给发件人。如果对方不接受该信件,则系统将在30天后回收...

评论列表

访客
2022-09-25 12:50:36

s from = new InternetAddress(sender_username);            message.setFrom(from);            // 收件人            In

访客
2022-09-25 17:37:58

ress("123456789@qq.com")); //设置收件人地址 message.setRecipients( RecipientType.TO,

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。