首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法向SMTP主机发送电子邮件

无法向SMTP主机发送电子邮件
EN

Stack Overflow用户
提问于 2014-05-14 08:40:02
回答 1查看 724关注 0票数 1

我试图发送一封没有SSL/TLS的电子邮件,但收到以下例外情况:

代码语言:javascript
复制
javax.mail.MessagingException: Could not connect to SMTP host: mymail.test.com, port: 25;
 nested exception is:java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)

我发送电子邮件的代码:我把System.setProperty("java.net.preferIPv4Stack“,"true")也放在了其他帖子中,我使用的是java-6。

代码语言:javascript
复制
            String smtpHostServer = "mymail.test.com";
    String emailID = "user@test.com";
    System.setProperty("java.net.preferIPv4Stack" , "true");
    Properties props = System.getProperties();
    props.put("mail.smtp.host", smtpHostServer);
    props.put("mail.smtp.auth", "false");
    props.put("mail.smtp.starttls.enable", "false");

    Session session = Session.getDefaultInstance(props);
try {
        MimeMessage msg = new MimeMessage(session);
        // set message headers
        msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
        msg.addHeader("format", "flowed");
        msg.addHeader("Content-Transfer-Encoding", "8bit");

        msg.setFrom(new InternetAddress("noreply@test.com",
                "NoReply-JD"));

        msg.setReplyTo(InternetAddress.parse("noreply@test.com",
                false));

        msg.setSubject(subject, "UTF-8");

        msg.setText(body, "UTF-8");

        msg.setSentDate(new Date());

        msg.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(toEmail, false));
        System.out.println("Message is ready");
        Transport.send(msg);

        System.out.println("EMail Sent Successfully!!");
    } catch (Exception e) {
        e.printStackTrace();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 09:12:46

代码语言:javascript
复制
 <%@page contentType="text/html" pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
  <head>
  <title>Simple Mail Program</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
 <body>
<%@page import="java.sql.*"%>
<%@page import="javax.mail.*"%>
 <%@page import="javax.mail.internet.*"%>
  <%@ page import="java.io.*"%>
  <%@ page import="java.sql.*"%>
  <%@page import="java.util.*"%>
  <%@ page import="java.math.BigInteger"%>



 <%
String host = "smtp.tctinfotech.com";
//host = smtp_server; //"smtp.gmail.com"; user = jsp_email; //"YourEmailId@gmail.com" // email id to send the emails
//pass = jsp_email_pw; //Your gmail password
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
String to_add = request.getParameter("receiver");
String subject =request.getParameter("subject"); 
String messageText =request.getParameter("body"); 
String password = request.getParameter("pwd");
String from =request.getParameter("email_id");
boolean sessionDebug = true;
Properties props = System.getProperties();
props.put("mail.host", host);
props.put("mail.transport.protocol.", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.fallback", "false");
props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to_add) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setContent(messageText, "text/html"); // use setText if you want to send text
Transport transport = mailSession.getTransport("smtp");
System.setProperty("javax.net.ssl.trustStore", "conf/jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "admin");
transport.connect(host, from, password);
try 
{
    transport.sendMessage(msg, msg.getAllRecipients());
    out.println("sent");
    //WasEmailSent = true; // assume it was sent
}
catch (Exception err) 
{
    //WasEmailSent = false; // assume it's a fail
    out.println("Error" + err.getMessage());
}
transport.close();
%>
 </body>
 </html>

对于Servlet代码,请访问链接。

以上代码只接受来自用户的接收者和发件人的电子邮件id、密码、主题和正文部分。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23649618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档