Как отправить уведомление на email c JMeter?

Всем привет.

 
Есть необходимость отправлять уведомления на указанный email если тест не пройден.
Нашел у JMeter Mailer Visualizer. Судя по всему именно этот компонент может отправлять уведомления. Или я ошибаюсь, и он предназначен не для этого?
Но не получается настроить. Получаю такую ошибку:
 
2012/04/27 13:07:36 ERROR - jmeter.visualizers.MailerVisualizer: Couldn't send mail... com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. tb4sm6031899lab.14
 
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at org.apache.jmeter.reporters.MailerModel.sendMail(MailerModel.java:295)
at org.apache.jmeter.reporters.MailerModel.sendTestMail(MailerModel.java:308)
at org.apache.jmeter.visualizers.MailerVisualizer.actionPerformed(MailerVisualizer.java:271)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 
Кто сталкивался, пожалуйста помогите решить задачу.
Был бы очень благодарен за пример настроек.
Использовать собираюсь gmail.com

Есть пример кода на шарпах написаный.

Может быть пригодится. работает с gmail

 

using System.Web.Mail;
using System;
public class MailSender
{
    public static bool SendEmail(
    string pGmailEmail,
    string pGmailPassword,
    string pTo,
    string pSubject,
    string pBody,
    System.Web.Mail.MailFormat pFormat,
    string pAttachmentPath)
    {
        try
        {
            System.Web.Mail.MailMessage myMail = new System.Web.Mail.MailMessage();
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpserver",
            "smtp.gmail.com");
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpserverport",
            "465");
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/sendusing",
            "2");
            //sendusing: cdoSendUsingPort, value 2, for sending the message using
            //the network.

            //smtpauthenticate: Specifies the mechanism used when authenticating
            //to an SMTP
            //service over the network. Possible values are:
            //- cdoAnonymous, value 0. Do not authenticate.
            //- cdoBasic, value 1. Use basic clear-text authentication.
            //When using this option you have to provide the user name and password
            //through the sendusername and sendpassword fields.
            //- cdoNTLM, value 2. The current process security context is used to
            // authenticate with the service.
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
            //Use 0 for anonymous
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/sendusername",
            pGmailEmail);
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/sendpassword",
            pGmailPassword);
            myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpusessl",
            "true");
            myMail.From = pGmailEmail;
            myMail.To = pTo;
            myMail.Subject = pSubject;
            myMail.BodyFormat = pFormat;
            myMail.Body = pBody;
            if (pAttachmentPath.Trim() != "")
            {
                MailAttachment MyAttachment =
                new MailAttachment(pAttachmentPath);
                myMail.Attachments.Add(MyAttachment);
                myMail.Priority = System.Web.Mail.MailPriority.High;
            }

            System.Web.Mail.SmtpMail.SmtpServer = "smtp.gmail.com:465";
            System.Web.Mail.SmtpMail.Send(myMail);
            return true;
        }
        catch (Exception ex)
        {
            throw;
        }
    }
}

Эта ошибка - это не jmeter проблема, это ответ от вашего почтового сервера.

гугл говорит, что у вас в настройках вашего жмейловского аккаунта (того через который вы почту отправляете) включено использование ssl-протокола

Советую посмотреть в сторону Jenkins.

 

На стэковерфлов есть топик, в котором обсуждается ошибка, похожая на вашу, и возможно вам подойдет решение:
 
http://stackoverflow.com/questions/1946032/how-to-configure-environment-to-use-javamail
 
От себя добавлю. Попробуйте сначала отправить имейл с атачментами используя проверенную и надежную тулзу.
Например, Blat:  http://www.blat.net/
 
Используя такой подход, вы сможете убедится что SMTP клиент сконфигурен правильно.
 

Что вы там собираетесь увидеть? Каким боком Jenkins может быть заменой для JMeter?

Спасибо за ответ.

Да, действительно, ssl включено.

Каким образом можно решить данную проблему?

Отключить ssl в настройках вашего жмейл-аккаунта (раз вы об этом не знали, то подозреваю, что он вам не нужен).

Как отключить - погуглите, там в гугле есть 90% уже готовых ответов :)

Привет,

Для того чтобы воспользоваться MailerVisualizer вам необходимо указать в его настройках (в поле SMTP host) имя имейл сервера с открытой (без логина/пароля) ретрансляцией, это может быть или ваш локальный имейл сервер или имейл сервер вашей сетки, поддерживающий открытую ретрансляцию только для пользователей внутри сетки:

Пример:

------------------------

Если у Вас нету такого сервера, то вы можете воспользоваться SMTP Sampler-ом:

PS

Например: Создайте в jmeter переменную и храните в ней  результаты accertion-нов (удача/неудача), а с помощью if-controller-а проверяйте  значение этой переменной каждую итерацию и высылайте письмо в случае неудачи с помощью SMTP Sampler-а.

Я надеюсь что я понятно изъяснился :)