`

Java mail test

    博客分类:
  • J2EE
阅读更多
mail局域网Exchange服务器测试代码,仅限发送到domain内用户,发送外网需要exchange设置白名单,ref:
解决方案:
Exchange 2003:
Open the Exchange System Manager
Go in Administrative Groups -> Administrative group name -> Server -> Server name -> Protocols -> SMTP
Right click on Default SMTP Virtual Server -> properties
Access tab -> Relay button
Select "only the list below" and add the domain and\or IPs of your JIRA server
Exchange 2007:
For Exchange 2007, create a second receive connector for external addresses as described in 2007[url=https://confluence.atlassian.com/display/JIRA/How+to+Set+Up+SMTP+Relay+in+Exchange+2007]How to Set Up SMTP Relay in Exchange [/url].
(info) Check Microsoft's [url=http://msexchangeteam.com/archive/2006/12/28/432013.aspx]Exchange Archive[/url] as well.
Office 365:
Check [url=http://support.microsoft.com/kb/2572646]Microsoft's KB[/url] article on this.

package com.test.mail;

import java.util.Date;
import java.util.Properties;

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;

public class MailTest {
    private String host;

    private String auth;

    private String username;

    private String domainUser;

    private String password;

    public MailTest(String host, String auth, String domainUser,
            String username, String password) {
        super();
        this.host = host;
        this.auth = auth;
        this.domainUser = domainUser;
        this.username = username;
        this.password = password;
    }

    public boolean send(String[] to, String[] cc, String[] bcc, String subject,
            String content) throws MessagingException {
        Properties props = new Properties();
        props.put("mail.smtp.host", this.host);
        props.put("mail.smtp.auth", this.auth);
        Session s = Session.getInstance(props);
        s.setDebug(true);

        MimeMessage message = new MimeMessage(s);

        InternetAddress from = new InternetAddress(this.username);
        message.setFrom(from);
        InternetAddress[] Toaddress = new InternetAddress[to.length];
        for (int i = 0; i < to.length; i++) {
            Toaddress[i] = new InternetAddress(to[i]);
        }
        message.setRecipients(Message.RecipientType.TO, Toaddress);

        if (cc != null) {
            InternetAddress[] Ccaddress = new InternetAddress[cc.length];
            for (int i = 0; i < cc.length; i++) {
                Ccaddress[i] = new InternetAddress(cc[i]);
            }
            message.setRecipients(Message.RecipientType.CC, Ccaddress);
        }

        if (bcc != null) {
            InternetAddress[] Bccaddress = new InternetAddress[bcc.length];
            for (int i = 0; i < bcc.length; i++) {
                Bccaddress[i] = new InternetAddress(bcc[i]);
            }
            message.setRecipients(Message.RecipientType.BCC, Bccaddress);
        }
        message.setSubject(subject);
        message.setSentDate(new Date());

        BodyPart mdp = new MimeBodyPart();
        mdp.setContent(content, "text/html;charset=utf-8");
        Multipart mm = new MimeMultipart();
        mm.addBodyPart(mdp);
        message.setContent(mm);

        message.saveChanges();
        Transport transport = s.getTransport("smtp");
        transport.connect(this.host, (null == this.domainUser) ? this.username
                : this.domainUser, this.password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        return true;
    }

    public static void main(String[] args) {
        try {
            MailTest mailTest = new MailTest("edgeexc.xxxx.com", "true",
                    "SSICN\\vince.carter", "devtest@xxxx.cn",
                    "pwdtest");
            mailTest.send(
                    new String[] { "vince.carter@xxxx.cn" },
                    null,
                    null,
                    "Test smtp server",
                    "<h3>Test exchange server sending mail to normal mail servers like: domain, qq, gmail, 163.</h3>");
        }
        catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}


未加入白名单IP发送时,外网邮箱会提示:
DEBUG SMTP: Valid Unsent Addresses
DEBUG SMTP:   vince.feng@xxxx.cn
DEBUG SMTP:   tomy.locus@xxxx.cn
DEBUG SMTP: Invalid Addresses
DEBUG SMTP:   8888@qq.com
DEBUG SMTP: Sending failed because of invalid destination addresses
RSET
250 2.0.0 Resetting
javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
	com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay;
分享到:
评论

相关推荐

    JavaMailTest

    JavaMailTest是一个典型的Java应用程序,用于演示如何使用JavaMail API发送电子邮件。在本文中,我们将深入探讨JavaMail API,理解其工作原理,并通过一个实际的JavaMailTest示例来学习如何编写邮件发送代码。 ...

    JavaMailTest111.7z

    在“JavaMailTest111.7z”这个压缩包中,我们可以推测它包含了一个新手教程或者示例项目,用于演示如何使用JavaMail API来实现QQ邮箱和163邮箱的邮件发送与接收,以及附件的下载功能。 在JavaMail的使用过程中,...

    javamailtest带附件

    这个“javamailtest带附件”可能是某个示例项目或教程,展示了如何使用JavaMail API来发送带有附件的电子邮件。下面将详细讨论JavaMail API以及如何在其中添加附件。 1. **JavaMail API基础**: JavaMail API 是...

    javamailTest

    JavaMailTest是一个典型的Java应用程序,主要用于学习和实现电子邮件的发送功能。这个项目是为初学者设计的,通过清晰、简洁的代码帮助理解如何在Java中使用JavaMail API进行邮件通信。下面将详细介绍JavaMail API...

    java Mail的Demo

    message.setSubject("Java Mail Test"); // 主题 message.setText("你好,这是一封来自Java Mail的测试邮件。"); // 正文 // 发送邮件 Transport.send(message); System.out.println("邮件已发送成功!"); } ...

    java mail 详细资料

    message.setText("This is a test email sent using Java Mail."); Transport transport = session.getTransport("smtp"); transport.connect("smtp.example.com", "username", "password"); transport....

    java mail demo

    message.setSubject("Java Mail Test"); message.setText("Hello, this is a test email sent from Java using the JavaMail API."); ``` 这里,"recipient@example.com"是收件人的邮箱地址,你可以根据实际需要进行...

    Java 寄信範例

    String subject = "Java Mail Test"; String body = "Hello, this is a test email sent using JavaMail API."; Properties props = System.getProperties(); props.put("mail.smtp.starttls.enable", "true");...

    JAVA MAIL

    message.setSubject("Java Mail Test"); message.setText("This is a test email sent using JavaMail API."); ``` 最后,通过`Transport`类发送邮件: ```java Transport.send(message); System.out.println(...

    用java发送邮件

    在这个Java项目"JavaMailTest-master"中,我们可以学习如何使用JavaMail API来实现邮件的发送。 首先,发送邮件的基本流程包括以下几个步骤: 1. **配置邮件服务器**:JavaMail需要知道SMTP(Simple Mail Transfer...

    Java_Mail.zip_java_java mail_java.mail_mail

    Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库提供了全面的API,使得开发者能够方便地实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在Java应用...

    java javamail 邮件发送

    在JavaMailTest项目中,可能包含了一个或多个jar文件,如`javax.mail.jar`, `mail.jar`以及`activation.jar`。这些库包含了发送邮件所需的所有类和接口。 要发送一封邮件,你需要完成以下步骤: 1. **创建Session...

    韩顺平_时尚购物网站工程源码(带数据库)

    2. JavaMailtest 是一个javamail程序,可以发送邮件. 3. 更新的网上商城-数据库脚本.sql 是数据库脚本,在sql 2000的查询分析器运行即可 a注意:确保你的sql 2000中没有testdb3数据库 b注意:执行后,有一个错误...

    java高手真经 高级编程卷 卷4(4卷)

    JavaMailTest.zip //15.JavaMail邮件服务开发样例 WebServiceTest.zip //16.Web服务开发样例 DroolsTest.zip //20.Drool规则引擎开发样例 AcegiTest.zip //24.Acegi安全验证开发样例 (3)企业信息管理...

    java高手真经 高级编程卷 卷3(4卷)

    JavaMailTest.zip //15.JavaMail邮件服务开发样例 WebServiceTest.zip //16.Web服务开发样例 DroolsTest.zip //20.Drool规则引擎开发样例 AcegiTest.zip //24.Acegi安全验证开发样例 (3)企业信息管理...

    java高手真经 高级编程卷 卷2(4卷)

    JavaMailTest.zip //15.JavaMail邮件服务开发样例 WebServiceTest.zip //16.Web服务开发样例 DroolsTest.zip //20.Drool规则引擎开发样例 AcegiTest.zip //24.Acegi安全验证开发样例 (3)企业信息管理...

    java高手真经 高级编程卷 光盘内容 卷1(4卷)

    JavaMailTest.zip //15.JavaMail邮件服务开发样例 WebServiceTest.zip //16.Web服务开发样例 DroolsTest.zip //20.Drool规则引擎开发样例 AcegiTest.zip //24.Acegi安全验证开发样例 (3)企业信息管理...

    Java 邮件发送

    在`JavamailTest.java`文件中,你可以看到这些步骤的具体实现,包括可能的异常处理和自定义逻辑。通常,这个测试类会包含一个主方法,以便于直接运行测试邮件的发送。 总的来说,JavaMail API是Java开发者处理邮件...

    org.apache zip

    至于"压缩包子文件的文件名称列表"中只有一个条目:JavaMailTest,这可能是一个测试类,用于测试JavaMail API的功能。在实际开发中,开发者会创建这样的测试代码来验证邮件发送、接收或其他相关操作是否正确无误。...

    时尚购物网站工程源码(带数据库_韩顺平).rar

    2. JavaMailtest 是一个javamail程序,可以发送邮件. 3. 更新的网上商城-数据库脚本.sql 是数据库脚本,在sql 2000的查询分析器运行即可 a注意:确保你的sql 2000中没有testdb3数据库 b注意:执行后,有一个错误...

Global site tag (gtag.js) - Google Analytics