Java sendmail没有相当的工作(新方法)

时间:2015-09-03 20:13:35

标签: java sendmail

提前感谢您成为我的第二眼。这就是我发送电子邮件的方式,我不知道我改变了什么,打破了它。

import java.io.*;
String msg = "From:sender@em.ail\nTo:\"First Last\"<my@em.ail>\nSubject:Test Mail\n\nBlah Blah Blah\n.\n";
Process p = Runtime.getRuntime().exec(mail);
PrintWriter pw = new PrintWriter(p.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
pw.print(msg);
while (br.ready()) {System.out.println(br.readLine());}

真正令人困惑的是,如果我打印出 msg 并在运行&#39; sendmail -t&#39;之后将其粘贴到终端窗口中电子邮件发送就好了。我在Windows 7上使用putty而我的IDE是RSA 8.0.4。服务器正在运行某种类型的Solaris。我没有亲自反对安装库来处理邮件,但是在这里安装任何东西都是一项艰巨的任务。

根据每个人的建议,代码现在看起来像这样

import java.io.*;
String msg = "From:sender@em.ail\r\nTo:my@em.ail\r\nSubject:Test Mail\r\n\r\nBLAH BLAH BLAH\r\n.\r\n";
Process p = Runtime.getRuntime().exec(mail);
PrintWriter pw = new PrintWriter(p.getOutputStream());
pw.print(msg);
pw.close();

仍然无法运作。尝试从&#34; getErrorStream()&#34;进行缓冲读取没有回来。

3 个答案:

答案 0 :(得分:0)

尝试JavaMail。您需要在类路径中放入一些罐子。您还需要一个smtp服务器凭证。

答案 1 :(得分:0)

试试这个:

function deleteFirst( set:Object, elem:Object ) : Boolean
{
    var idx:int = set.indexOf( elem );
    if ( idx >= 0 )
    {
        set.splice( idx, 1 );
        return true;
    }
    return false;
}

或者这个:

import java.io.*;
String msg = "From:sender@em.ail\r\nTo:my@em.ail\r\nSubject:Test Mail\r\n\r\nBLAH BLAH BLAH\r\n.\r\n";
Process p = Runtime.getRuntime().exec(mail);
PrintWriter pw = new PrintWriter(p.getOutputStream());
pw.print(msg);
pw.flush();
pw.close();

答案 2 :(得分:0)

问题结果是字符串邮件中的拼写错误以及 ready()没有做我认为的事情的事实。错字导致错误,其中一个读者阻止。修复拼写错误或删除InputReader修复它,新版本同时执行。