2017-02-08 7 views
2

Я пытаюсь отправить электронное письмо через usercript с помощью smtpjs, потому что это самый простой способ. Однако это кажется более сложным, чем просто отправка его с помощью javascript, встроенного в HTML-страницу. Используя этот usercript (based on the smtpjs website), я не получаю ошибки в консоли и не отправляется электронное письмо, это проблема с каркасом или я что-то упустил? (Если вы предлагаете простой способ для отправки сообщений электронной почты в пределах userscript, не стесняйтесь делиться)Использование SmtpJS в пользовательском документе: не работает, нет сообщений об ошибках?

// ==UserScript== 
    // @name   New Userscript 
    // @namespace http://tampermonkey.net/ 
    // @version  0.1 
    // @description try to take over the world! 
    // @author  You 
    // @match  * 
    // @grant  none 
    // @require  http://smtpjs.com/smtp.js 
    // ==/UserScript== 

    if (confirm("send mail?")) { 
     Email.send("[email protected]", 
        "[email protected]", 
        "This is a subject", 
        "this is the body", 
        "smtp.gmail.com", 
        "USER", 
        "PW"); 
    } 

(я попробовал gmailAPI (чистая версия JS не поддерживает отправку сообщений электронной почты?) И emailjs рамок, без успеха в userscripts)

ответ

1

Если вы посмотрите на smtpjs.com source, он создает URL-адрес запроса на отправку, а затем добавляет его в документ внутри <link>. Это не будет работать на защищенных страницах.

/* SmtpJS.com */ 
Email = { 
    send: function (t, e, o, n, d, r, c) { 
    var a = Math.floor(1e6 * Math.random() + 1), 
    m = "http://smtpjs.com/smtp.aspx?"; 
    m += "From=" + t, 
    m += "&to=" + e, 
    m += "&Subject=" + encodeURIComponent(o), 
    m += "&Body=" + encodeURIComponent(n), 
    void 0 == d.token ? 
     (m += "&Host=" + d, m += "&Username=" + r, m += "&Password=" + c, m += "&Action=Send") : 
     (m += "&SecureToken=" + d.token, m += "&Action=SendFromStored"), 
    m += "&cachebuster=" + a, 
    Email.addScript(m) 
    }, 
    addScript: function (t) { 
    var e = document.createElement("link"); 
    e.setAttribute("rel", "stylesheet"), 
    e.setAttribute("type", "text/xml"), 
    e.setAttribute("href", t), 
    document.body.appendChild(e) 
    } 
}; 

Вы можете использовать большую часть кода выше ... сохранить функцию send, но вместо функции addScript с GM_xmlhttpRequest размещать данные на свой сервер.

+0

Этот ответ устарел. Кажется, что [более новая версия] (https://smtpjs.com/smtp.js) smtpjs использует XMLHttpRequest для конечной точки HTTPS. Тем не менее, он все еще не работает для меня. –

Смежные вопросы