简体   繁体   English

无法使用JavaMail发送任何邮件

[英]Can't send any mail using JavaMail

I want to send a mail using Java but it doesn't work using this tutorial thai I found here http://www.tutorialspoint.com/java/java_sending_email.htm . 我想使用Java发送邮件,但是在本教程http://www.tutorialspoint.com/java/java_sending_email.htm上无法正常使用。

Here is my main method 这是我的主要方法

public static void main(String[] args) {
        // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

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

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

      // Setup mail server
      properties.setProperty("smtp.laposte.net", 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();
      }
    }

And I have the error below: 我有下面的错误:

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25; javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:25; nested exception is: java.net.ConnectException: Connection refused: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642) at javax.mail.Service.connect(Service.java:295) at javax.mail.Service.connect(Service.java:176) at javax.mail.Service.connect(Service.java:125) at javax.mail.Transport.send0(Transport.java:194) at javax.mail.Transport.send(Transport.java:124) at javamail.JavaMail.main(JavaMail.java:58) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connec 嵌套的异常是:java.net.ConnectException:拒绝连接:在com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java :)上的com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)连接642)在javax.mail.Service.connect(Service.java:295)在javax.mail.Service.connect(Service.java:176)在javax.mail.Service.connect(Service.java:125)在javax。 mail.Transport.send0(Transport.java:194)(位于javax.mail.Transport.send(Transport.java:124)(位于javamail.JavaMail.main(JavaMail.java:58)))原因:java.net.ConnectException:Connection拒绝:在java.net处的java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)处的java.net.DualStackPlainSocketImpl.connect0(本机方法)处进行连接。在Java.net处进行连接。 java.net上的AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)java.net.PlainSocketImpl.connec上的AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) t(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938) ... 7 more BUILD SUCCESSFUL (total time: 1 second) 在java.net.Socket.connect(Socket.java)上的java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)上的t(PlainSocketImpl.java:172)在java.net.Socket.connect(Socket.java:589)处:538.com.com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)com.sun.mail.smtp。 SMTPTransport.openServer(SMTPTransport.java:1938)...另外7个BUILD SUCCESSFUL(总时间:1秒)

error is in host use 主机使用错误

host="smtp.gmail.com";

if you are using gmail id for sending mail. 如果您使用的是Gmail ID发送邮件。 then you need to turn on gmail sending mail from extrnel application for users. 那么您需要打开gmail从extrnel应用程序为用户发送邮件。 follow below link https://support.google.com/a/answer/57919?hl=en turn on and then try again. 请按照以下链接https://support.google.com/a/answer/57919?hl=zh-CN打开,然后重试。

you can also use spring for sending mail. 您还可以使用spring发送邮件。

bean.xml bean.xml

<bean id="myMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.gmail.com" />
        <property name="port" value="587" />
        <property name="username" value="<user_name>" />
        <property name="password" value="<password>" />

        <!-- The name of the property, following JavaBean naming conventions -->
        <property name="javaMailProperties">
            <props>
                <prop key="mail.transport.protocol">smtp</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.debug">true</prop>
            </props>
        </property>
    </bean>

.

@Service("myMail")
    public class myMailApi {

        @Autowired
        private MailSender myMailSender;

        public void sendMail(String to,String from,String subject, String body){
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setTo(to);
            simpleMailMessage.setFrom(from);
            simpleMailMessage.setSubject(subject);
            simpleMailMessage.setText(body);
            myMailSender.send(simpleMailMessage);
        }
    }



private static void sendMailClient() {
        String mailXml = "mail-bean.xml";
        ApplicationContext context = new ClassPathXmlApplicationContext(mailXml);
        myMailApi mailBean = (mmyMailApi) context
                .getBean("myMail");
        mailBean.sendMail("<to>",
                "<from>", "<subject>", "<body>");
    }

With which server I can send email without have an account and login in java mail api ? 我可以使用哪个服务器在没有帐户的情况下发送电子邮件并登录Java Mail api? Is hotmail autorizing sending emails without logging in in java mail ? Hotmail是否可以在不登录Java邮件的情况下自动发送电子邮件?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM