当前位置: 首页 > 知识库问答 >
问题:

使用smtp发送邮件时出错

史英飙
2023-03-14

我需要将邮件从我的gmail帐户发送到另一个帐户。我使用了以下代码。

               String fromaddress = "xxx@gmail.com"; 
    String password = "yyy";
    String hostname = "smtp.gmail.com";
    String hoststring = "mail.smtp.host";
    String toaddress = "yyy@gmail.com";
    String emailcontent;

    Properties properties = System.getProperties();
    properties.setProperty(hoststring, hostname);
    Session session = Session.getDefaultInstance(properties);

    try{
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(fromaddress));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(toaddress));
        message.setSubject("hi");
        emailcontent = "hi...";
        message.setText(emailcontent);
        System.out.println(emailcontent);
        Transport.send(message);
        System.out.println("Sent....");
    }catch (MessagingException mex) 
    {
        mex.printStackTrace();
    }

但我得到的错误如下。。。javax。邮政MessaginException:无法连接到SMTP主机:SMTP。gmail。com,端口:25

我该怎么解决这个问题。你能帮我吗?

共有3个答案

史宸
2023-03-14

只是在上面的问题上增加了一些调整:

将端口更改为465以启用ssl发送。

我不认为上面的代码会起作用,因为你也需要一个身份验证器对象。因为smtp在gmail的情况下也需要身份验证。

你可以这样做:

有一个布尔标志,

boolean authEnable = true;  //True for gmail
boolean useSSL = true; //For gmail
//Getters and setters for the same

  if (isUseSSL()) {
         properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
         properties.put("mail.smtp.socketFactory.port", "465");
  }

Authenticator authenticator = new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("abc@gmail.com", "xyz"));
        }
    };
    if (isAuthEnable()) {
        properties.put("mail.smtp.auth", "true");
        session = Session.getDefaultInstance(properties, authenticator);
    } else {
        session = Session.getDefaultInstance(properties);
    }
阎晔
2023-03-14

我想你需要把25号港口改成587号

你可以从

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

gmail设置帮助链接:

http://gmailsmtpsettings.com/

彭雨华
2023-03-14
public static void sendEmail(Email mail) {

    String host = "smtp.gmail.com";
    String from = "YOUR_GMAIL_ID";
    String pass = "YOUR_GMAIL_PASSWORD";
    Properties props = System.getProperties();
    props.put("mail.smtp.starttls.enable", "true"); // added this line
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", pass);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");

    // Get the default Session object.
    Session session = Session.getDefaultInstance(props, null);

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

        // Set sender
        message.setFrom(new InternetAddress("Senders_EMail_Id"));

        // Set recipient
        message.addRecipient(Message.RecipientType.TO, new InternetAddress("RECIPIENT_EMAIL_ID"));

        // Set Subject: header field
        message.setSubject("SUBJECT");

        // set content and define type
        message.setContent("CONTENT", "text/html; charset=utf-8");

        Transport transport = session.getTransport("smtp");
        transport.connect(host, from, pass);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
      } catch (MessagingException mex) {
        System.out.println(mex.getLocalizedMessage());
    }

}

}`

我认为这应该能奏效。

 类似资料:
  • SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send

  • SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send

  • 问题内容: 我正在使用以下方法使用SMTP从Python发送邮件。是使用的正确方法还是我缺少的陷阱? 问题答案: 我使用的脚本非常相似。我将其发布在此处,作为如何使用email。*模块生成MIME消息的示例。因此可以轻松修改此脚本以附加图片等。 我依靠ISP添加日期时间标头。 我的ISP要求我使用安全的smtp连接发送邮件,我依靠smtplib模块(可从http://www1.cs.columbi

  • 我通过SMTP服务发送电子邮件时收到以下错误消息: 我的系统上有以下SMTP设置: 操作系统:Windows 7家庭高级版 IIS:IIS 7 如何解决这个问题? 谢谢。

  • 主要内容:实例,使用 Ruby 发送 HTML 邮件,实例,发送带附件的邮件,实例SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 Ruby提供了 Net::SMTP 来发送邮件,并提供了两个方法 new 和 start: new 方法有两个参数: server name 默认为 localhost port number 默认为 25 start 方法有以下参数:

  • SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法如下: import smtplib smtpObj = smtplib.SMTP( [host