Groovy脚本在Groovy控制台中工作但在SoapUi Groovy Script中抛出错误

时间:2013-04-12 18:00:32

标签: groovy javamail soapui qa

我正在尝试使用Groovy脚本发送包含SOAPUI中的测试步骤结果的电子邮件。我首先在我的Groovy控制台上编写了代码并且工作正常。 当我在SOAPUI(Groovy脚本测试步骤)中复制并粘贴它时,它显示错误。 这是我的代码:

我正在尝试使用Groovy脚本发送包含SOAPUI中的测试步骤结果的电子邮件。我首先在我的Groovy控制台上编写了代码并且工作正常。 当我在SOAPUI(Groovy脚本测试步骤)中复制并粘贴它时,它显示错误。 这是我的代码

import javax.mail.*
import javax.mail.internet.*

public class SMTPAuthenticator extends Authenticator
{
    public PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication('test@gmaail.com', '****');
    }
}

def  d_email = "test@gmail.com",
        d_uname = "test",
        d_password = "*****",
        d_host = "smtp.gmail.com",
        d_port  = "465", //465,587
        m_to = "test2@gamil.com",
        m_subject = "Testing",
        m_text = "Hi, this is the testing email."

def props = new Properties()
props.put("mail.smtp.user", d_email)
props.put("mail.smtp.host", d_host)
props.put("mail.smtp.port", d_port)
props.put("mail.smtp.starttls.enable","true")
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.socketFactory.port", d_port)
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory")
props.put("mail.smtp.socketFactory.fallback", "false")

def auth = new SMTPAuthenticator()
def session = Session.getInstance(props, auth)
session.setDebug(true);

def msg = new MimeMessage(session)
msg.setText(m_text)
msg.setSubject(m_subject)
msg.setFrom(new InternetAddress(d_email))
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to))

Transport transport = session.getTransport("smtps");
transport.connect(d_host, 465, d_uname, d_password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();

问题在于这一行: transport.sendMessage(msg,msg.getAllRecipients());

当我删除此行时,没有errpr但是没有发送消息..

你知道为什么这在groovy控制台上完美运行但在Soapui中抛出错误

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我测试了你的代码并且它有效,除了两件事:

1.  Run the script with 'groovy.bat -classpath mail-1.4.1.jar sendemail.groovy'
2.  Fix the 2 misspellings of gmail in the script.