这有点令人困惑,所以请耐心等待......
我想建立一个系统,用户可以通过我的网站发送模板化的电子邮件,除非它实际上并没有使用我的服务器发送 - 而是只打开他们自己的本地邮件客户端,并准备好电子邮件。应用程序将使用预定义变量填充电子邮件正文,以保存用户必须自己键入。然后,如果消息不完全符合他们的目的,他们可以根据需要编辑消息。
我希望它通过用户的本地邮件客户端有多种原因,因此让服务器发送电子邮件不是一种选择:它必须是100%客户端。
我已经有一个主要工作的解决方案,我会发布详细信息作为答案,我想知道是否有更好的方法?
答案 0 :(得分:126)
我现在这样做的方式基本上是这样的:
HTML:
<textarea id="myText">
Lorem ipsum...
</textarea>
<button onclick="sendMail(); return false">Send</button>
Javascript:
function sendMail() {
var link = "mailto:me@example.com"
+ "?cc=myCCaddress@example.com"
+ "&subject=" + escape("This is my subject")
+ "&body=" + escape(document.getElementById('myText').value)
;
window.location.href = link;
}
令人惊讶的是,这很有效。唯一的问题是,如果身体特别长(超过2000个字符),那么它只是打开一个新的电子邮件,但它没有信息。我怀疑它与超出URL的最大长度有关。
答案 1 :(得分:16)
以下是使用jQuery和“元素”点击的方式:
$('#element').click(function(){
$(location).attr('href', 'mailto:?subject='
+ encodeURIComponent("This is my subject")
+ "&body="
+ encodeURIComponent("This is my body")
);
});
然后,您可以通过从输入字段(即使用$('#input1').val()
或使用$.get('...')
的服务器端脚本提供内容来获取您的内容。玩得开心
答案 2 :(得分:10)
您不需要任何javascript,只需要将您的href编码为:
<a href="mailto:me@me.com">email me here!</a>
答案 3 :(得分:5)
如何在文本框上进行实时验证,一旦超过2000(或任何最大阈值),则显示“此电子邮件太长,无法在浏览器中完成,请<span class="launchEmailClientLink">launch what you have in your email client</span>
”< / p>
我有
.launchEmailClientLink {
cursor: pointer;
color: #00F;
}
并将其添加到你的onDomReady
中$('.launchEmailClientLink').bind('click',sendMail);
答案 4 :(得分:5)
您可以使用此免费服务:https://www.smtpjs.com
<script src="https://smtpjs.com/v2/smtp.js">
</script>
使用以下方式发送电子邮件:
Email.send("from@you.com",
"to@them.com",
"This is a subject",
"this is the body",
"smtp.yourisp.com",
"username",
"password");
答案 5 :(得分:2)
如果这只是打开用户的客户端发送电子邮件,为什么不让他们在那里撰写。您无法跟踪他们发送的内容,但如果这不重要,则只需收集地址和主题,然后弹出客户端以让用户填写正文。
答案 6 :(得分:1)
这个想法的问题是用户必须拥有一个电子邮件客户端,如果他依赖网络邮件则不是这种情况,许多用户就是这种情况。 (至少在我十几年前调查这个问题时没有转向重定向到这个网络邮件)。
这就是为什么正常的解决方案是依靠php mail()来发送电子邮件(服务器端,然后)。
但如果现在&#34;电子邮件客户端&#34;我总是自动设置到网络邮件客户端,我很乐意知道。
答案 7 :(得分:1)
向mandrillapp.com发送请求:
Double[] arrayName = hashtableName.get(keyName).toArray(new Double[hashtableName.get(keyName).size()]);
答案 8 :(得分:0)
您可以将以下内容添加到 HTML 文件的 <head>
中:
<script src="https://smtpjs.com/v3/smtp.js"></script>
<script type="text/javascript">
function sendEmail() {
Email.send({
SecureToken: "security token of your smtp",
To: "someone@gmail.com",
From: "someone@gmail.com",
Subject: "Subject...",
Body: document.getElementById('text').value
}).then(
message => alert("mail sent successfully")
);
}
</script>
以下是HMTL部分:
<textarea id="text">write text here...</textarea>
<input type="button" value="Send Email" onclick="sendEmail()">
因此 sendEmail() 函数使用以下方法获取输入:
<块引用>document.getElementById('id_of_the_element').value
例如,您可以添加另一个 HTML 元素,例如主题(带有 id="subject"):
<textarea id="subject">write text here...</textarea>
并在 sendEmail() 函数中获取它的值:
<块引用>主题:document.getElementById('subject').value
大功告成!
注意:如果您没有 SMTP 服务器,您可以免费创建一个 here。然后加密您的 SMTP 凭据 here(sendEmail() 中的 SecureToken 属性对应于在那里生成的加密凭据)。