Новый модуль почты

Запросы функционала
  • @FastSpace а ты там брал ? не развод ?

  • @Bigma said in Новый модуль почты:

    @FastSpace а ты там брал ? не развод ?

    Они давно на рынке, не развод

  • @Bigma said in Новый модуль почты:

    @FastSpace а ты там брал ? не развод ?

    У них дорого только, есть гораздо дешевле.

  • @FastSpace ты про валандерси ?

  • • Удаление всех сообщений
    • Удаление сообщение по ид
    • Активировать imap

  • @Bigma said in Новый модуль почты:

    @FastSpace ты про валандерси ?

    Я спрашивал, у него вообще таких нет.

  • @artihorror said in Новый модуль почты:

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

    Ах да, еще возможность добавить получателей скрытой копии

  • @artihorror said in Новый модуль почты:

    @artihorror said in Новый модуль почты:

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

    Ах да, еще возможность добавить получателей скрытой копии

    и продолжаю добавлять хотелки.

    Возможность добавлять свои заголовки в письмо. Возможность использовать dkim подпись

  • @artihorror said in Новый модуль почты:

    Возможность использовать dkim подпись

    Это делает сервер через который отправляется письмо своим закрытым ключом, а не клиент

  • @UserTrue said in Новый модуль почты:

    @artihorror said in Новый модуль почты:

    Возможность использовать dkim подпись

    Это делает сервер через который отправляется письмо своим закрытым ключом, а не клиент

    а вот тут ты не до конца прав) только что отправлено через почтовый модуль баса ![alt text](12345.PNG image url)

    и то же письмо, отправленное из вебморды майл ру имеет сию подпись. Правда использую я майл ру почту для домена, по сему пропали мои влажные мечты о 100500 в секунду в инбокс с помощью баса, вот сижу переписываю все на nodemailer.

  • @UserTrue эх, ну вот куда ты убежал, а как же дискуссия?(

  • @artihorror а чего не прав. Сервер может так настроен, что не подписывает письма которые через smtp идут. Возможно он подписывает только посьма с веб морды и приложения.

    Не ну если у тебя есть закртый ключ почтового сервиса тогда конечно можно подписать xD Если бы каждый мог подписать письмо ключом сервиса, то какой бы был смысл в этой подписи?

    @artihorror said in Новый модуль почты:

    @UserTrue эх, ну вот куда ты убежал, а как же дискуссия?(

    Не убежал, а уснул )

  • @UserTrue said in Новый модуль почты:

    а чего не прав. Сервер может так настроен, что не подписывает письма которые через smtp идут. Возможно он подписывает только посьма с веб морды и приложения.
    Не ну если у тебя есть закртый ключ почтового сервиса тогда конечно можно подписать xD Если бы каждый мог подписать письмо ключом сервиса, то какой бы был смысл в этой подписи?

    уточнила, что использую майл ру для бизнеса, у них есть гуйд для сего дела https://help.mail.ru/developers/notes/dkim

  • @artihorror а ну это другое. Только можно с тем же успехом свой сервер настроить и будет он тебе все сам подписывать

  • @UserTrue ну как бы все смтп модули для любого яп позволяют добавить эту подпись. Хотя все упирается в возможность самостоятельного добавления заголовков

  • @Daniel said in Новый модуль почты:

    Сделайте пожалуйста возможность самостоятельно формировать From. Целиком.
    В данный момент BAS его автоматически заворачивает в <>, из-за чего не получается подставить конструкцию вида

    Имя<адрес>
    

    На выходе бас выдает такое

    <Имя<адрес>>
    

    Я так и не смог модифицировать движок модуля самостоятельно, чтоб убрать эти дополнительные скобки
    Спасибо

    Перед отправкой сообщения используй действие "выполнить код" с кодом:

    smtp_client_send_mail = function (mailfrom, mailto, mailcc, mailsubject, mailbody, is_html, attachments)
    {
    	if(typeof(_SMTP_SETTINGS)=='undefined')
    		fail("No smtp settings")
    
    	var _SMTP_NEW_MAIL = JSON.parse(JSON.stringify(_SMTP_SETTINGS));
    
    	if(typeof(_SMTP_DEBUG) != "undefined" && _SMTP_DEBUG)
    	{
    		_SMTP_NEW_MAIL["trace"] = true
    	}
    
    	_SMTP_NEW_MAIL.options["CURLOPT_MAIL_FROM"] = _SMTP_SETTINGS.options["CURLOPT_USERNAME"];
    	mailto = mailto.replace(/\s/g, "");
    	mail_rcpt = mailto.split(",");
    	attachments_list = []
    	if(typeof(attachments) == "string")
    	{
    		if (attachments.length > 0)
    		{
    			attachments_list = attachments.split(",");
    		}
    	}else if(typeof(attachments) == "object")
    	{
    		attachments_list = attachments
    	}
    
    	
    	if(mailcc.length > 0)
    	{
    		mailcc = mailcc.replace(/\s/g, "")
    		mail_rcpt = mail_rcpt.concat(mailcc.split(",").slice());
    	};
    	
    	_SMTP_NEW_MAIL.options["CURLOPT_MAIL_RCPT"] = mail_rcpt;
    	
    	mail_raw = "To: <" + mailto + ">\r\nFrom: " + mailfrom + "<" + _SMTP_SETTINGS.options["CURLOPT_USERNAME"] + ">";
        if(mailcc.length > 0)
    	{
    		mail_raw += "\r\nCC: <" + mailcc + ">"
    	};
    	
    	
    	mail_raw += "\r\nSubject: " + mailsubject;
    	
    	mailbody = base64_encode(mailbody);
    	var boundary = rand(22);
    	if(is_html == true)
    	{
    		var msg_body_type = "text/html; charset=utf-8";
    	} else
    	{
    		var msg_body_type = "text/plain; charset=utf-8";
    	}
    	mail_raw += "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=" + boundary + "\r\n\r\nThis is a multipart message in MIME format.\r\n\r\n" + "--" + boundary;
    	mail_raw += "\r\nContent-Type: " + msg_body_type + "\r\nContent-Transfer-Encoding: base64\r\n\r\n" + mailbody + "\r\n";
    	if(attachments_list.length > 0)
    	{
    		mail_raw += "\r\n--" + boundary;
    		for(var i = 0; i<attachments_list.length; i++)
    		{
    			var attach_filename = attachments_list[i]
    			if (attachments_list[i].indexOf("/") >=0)
    			{
    				attach_filename = attachments_list[i].split("/")[attachments_list[i].split("/").length - 1]
    			}else if (attachments_list[i].indexOf("\\") >=0)
    			{
    				attach_filename = attachments_list[i].split("\\")[attachments_list[i].split("\\").length - 1]
    			};
    			var extension = "." + attach_filename.split(".")[attach_filename.split(".").length - 1];
    			var content_type = BAS_GET_MIME_CTYPE(extension);			
    			var attach_base64 = native("filesystem", "readfile", JSON.stringify({value: attachments_list[i],base64:true,from:0,to:0}));
    			mail_raw += "\r\nContent-Type: " + content_type + ";\r\nContent-Disposition: attachment; filename=\"" + attach_filename + "\"\r\nContent-Transfer-Encoding: base64\n\n" + attach_base64;
    	
    			if(i == attachments_list.length - 1)
    			{
    				mail_raw += "\r\n--" + boundary + "--";
    			}else
    			{
    				mail_raw += "\r\n--" + boundary;
    			};
    		};
    	}else
    	{
    		mail_raw += "\r\n--" + boundary + "--";
    	};
    
    	_SMTP_NEW_MAIL["read_from_string"] = mail_raw;
    	return _SMTP_NEW_MAIL
    }
    

    Тогда "From" будет формироваться полностью

  • @Fox ух проще ноду юзать ))

  • @UserTrue said in Новый модуль почты:

    @Fox ух проще ноду юзать ))

    Проще чем создать одно действие? Я из стандартного модуля изменил одну строчку, если сложно, я могу выложить это изменение в виде модуля, ну или выложить решение через curlwrapper

  • @Fox said in Новый модуль почты:

    Проще чем создать одно действие? Я из стандартного модуля изменил одну строчку, если сложно, я могу выложить это изменение в виде модуля, ну или выложить решение через curlwrapper

    А, я думал это ты для нас так постарался ))

  • @gudolik said in Новый модуль почты:

    auto IMAP host.MX discovery lik

    Поправьте меня если я ошибаюсь, но Atlantr брутит хост,путем подставления к домену префикса: imap,mail,smtp,pop3 и так далее. Никакой особой магии и поисков из вне там не реализовано. Было: mail.com Стало: imap.mail.com ; smtp.mail.com и так далее.
    Но как же быть с доменами которые имеют разные названия и хостятся на одном сервере? Для примера: casema.nl,ziggo.nl,upcmail.nl,home.nl,quicknet.nl и другие базируются на сервере: imap.ziggo.nl И подставление префикса перед доменом мало чем поможет т.к. допустим сервера с именем imap.home.nl или pop.upcmail.nl не существует в природе. Опять-же,поправьте меня если я в чем-то не прав.
    Вот кусок кода который использует Atlantr для брута хоста:

    #------GETUNKNOWN--HOST--------------------------#
    def getunknown_imap(subb):
        socket.setdefaulttimeout(time_out)
        try:
            # TODO: Change to dynamic matchers
            sub = [
                'imap',
                'mail',
                'pop',
                'pop3',
                'imap-mail',
                'inbound',
                'mx',
                'imaps',
                'smtp',
                'm']
            for host in sub:
                host = host + '.' + subb
                try:
                    mail = imaplib.IMAP4_SSL(str(host))
                    mail.login('test', 'test')
                except imaplib.IMAP4.error:
                    return host
        except BaseException:
            return None
    
    
    def ini_uh(host):
        try:
            host = host.split('@')[1]
            v = getunknown_imap(host)
            if v is not None:
                with open("hoster.dat", "a") as myfile:
                    myfile.write('\n' + host + ':' + v + ":993")
                    ImapConfig[host] = v
                return v
            return False
        except BaseException:
            return False
    

    Почитал на гитхабе в документации- так и есть.
    https://github.com/SUP3RIA/Atlantr
    Hosts Without Settings
    If no settings are found for a domain, a hardcoded list of subdomains will be used to find a valid imap server.

    mail, pop, pop3, imap-mail, inbound, mx, imaps, smtp, me

    If there is a valid subdomain found of a domain to establish a connection to an imap server, it will be saved to hoster.dat.