【问题标题】:Send mail from local machine mail server to gmail or other mail server in java将邮件从本地机器邮件服务器发送到 gmail 或 java 中的其他邮件服务器
【发布时间】:2014-04-06 06:25:24
【问题描述】:

我有以下代码

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail
{
   public static void main(String [] args)
   {

      // Recipient's email ID needs to be mentioned.
      String to = "*****@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "test1@localhost";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Now set the actual message
         message.setText("This is actual message");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Mercury 服务器日志

T 20140406 114001 534133f8 Connection from 127.0.0.1
T 20140406 114001 534133f8 EHLO RAVI-PC
T 20140406 114001 534133f8 MAIL FROM:<test1@localhost>
T 20140406 114001 534133f8 RCPT TO:<mygmailaccount@gmail.com>
T 20140406 114001 534133f8 DATA
T 20140406 114001 534133f8 DATA - 9 lines, 274 bytes.
T 20140406 114001 534133f8 QUIT
T 20140406 114001 534133f8 Connection closed with 127.0.0.1, 0 sec. elapsed.

服务器调试输出

DEBUG: JavaMail version 1.5.0
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: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
220 localhost ESMTP server ready.
DEBUG SMTP: connected to host "localhost", port: 25

EHLO RAVI-PC
250-localhost Hello RAVI-PC; ESMTPs are:
250-TIME
250-SIZE 0
250 HELP
DEBUG SMTP: Found extension "TIME", arg ""
DEBUG SMTP: Found extension "SIZE", arg "0"
DEBUG SMTP: Found extension "HELP", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<test1@localhost>
250 Sender OK - send RCPTs.
RCPT TO:<mygmailaccount@gmail.com>
250 Recipient OK - send RCPT or DATA.
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   mygmailaccount@gmail.com
DATA
354 OK, send data, end with CRLF.CRLF
From: test1@localhost
To: mygamilaccount@gmail.com
Message-ID: <22999979.0.1396766922465.JavaMail.RAVI@RAVI-PC>
Subject: This is the Subject Line!
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is actual message
.
250 Data received OK.
QUIT
221 localhost Service closing channel.
Sent message successfully....

我在本地机器上设置了Mercury Mail Server,现在我正在尝试从本地机器邮件服务器向gmail用户发送邮件。我得到了Sent message successfully.... 输出。当我执行上面的代码时。但是,我的 gmail 帐户没有收到任何邮件。

【问题讨论】:

  • 您查看过垃圾邮件箱吗?
  • 一分钟,我会分析你的代码。
  • @Downvoter 请解释我的问题有什么问题?
  • 验证您的邮件服务器是否正在接收来自您的应用程序的邮件。您可能需要在服务器上启用日志记录才能执行此操作。如果没有收到邮件,您需要查看您的应用程序设置为传递给它的方式。如果收到它,则问题出在您的邮件服务器配置或路由上,并且与Stack Overflow 无关
  • 更改此代码:“addRecipient”为“setRecipients”并进行测试。

标签: java email gmail jakarta-mail mercury-mta


【解决方案1】:

jWeaver,我遇到了一个类似的问题,并以一种不太清楚解释原因的方式解决了,但是工作。

将您的属性模式更改为与此一致:

    Properties props = System.getProperties();
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.debug", "true");

【讨论】:

  • 我已经包含了你的代码,看起来很好,我没有收到任何错误。但是,仍然没有收到邮件。 :(
  • 伙计,我建议你在你的机器上安装另一个邮件服务器,做测试。可能有问题。检查门,如果它们打开。在您的代码中配置它:“props.put("mail.smtp.port", "465");"我使用 465 端口,但你使用你想要的端口。检查你的防火墙。
猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 2015-05-24
  • 2011-08-19
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
相关资源
最近更新 更多