Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

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


(oleksergey) #1

Всем привет.

 
Есть необходимость отправлять уведомления на указанный 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

(Ivan Bordyug) #2

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

Может быть пригодится. работает с 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;
        }
    }
}


(Леша) #3

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

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


(re1ax) #4

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


(Дмитрий Жарий) #5

 

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

(Леша) #6

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


(oleksergey) #7

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

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

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


(Леша) #8

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

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


(vpry) #9

Привет,

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

Пример:

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

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

PS

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

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