天道酬勤,学无止境

电子邮件正文中的 AJAX?(AJAX in email body?)

问题

有没有办法在呈现时将动态内容加载到电子邮件中? 最近我不得不重新预订航班,预订代理告诉我关闭手机上的电子邮件,以便他们可以给我一个新的行程。 他们如何将动态内容输送到电子邮件中? 阿贾克斯? 我认为 JS 在电子邮件中不起作用。

回答1

AJAX 不在大多数电子邮件客户端中运行 - 这是一个安全风险。 我唯一能想象的是他们可以改变图片。 每次打开电子邮件时,通常都会从服务器重新加载图片。 除此之外,与您交谈的人可能不了解电子邮件的实际运作方式。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在Python中使用BeautifulSoup从脚本标签中提取文本(Extracting text from script tag using BeautifulSoup in Python)
    问题 我正在寻找使用美丽的汤(Python)从以下代码中的SCRIPT标签(而不是在正文中)提取电子邮件,电话和姓名值。 我看到美丽的汤可以用来提取。 我尝试使用以下代码获取页面- fileDetails = BeautifulSoup(urllib2.urlopen('http://www.example.com').read()) results = fileDetails.find(email:") 该Ajax请求代码不再在页面中重复。 我们还可以编写try and catch以便在页面中未找到它时也不会引发任何错误。 <script type="text/javascript" language='javascript'> $(document).ready( function (){ $('#message').click(function(){ alert(); }); $('#addmessage').click(function(){ $.ajax({ type: "POST", url: 'http://www.example.com', data: { email: 'abc@g.com', phone: '9999999999', name: 'XYZ' } }); }); }); 一旦得到这个,我也想存储在一个excel文件中。 谢谢您的期待。 回答1
  • RESTful密码重置(RESTful password reset)
    问题 构建用于重置密码的RESTful资源的正确方法是什么? 该资源用于丢失或忘记密码的人的密码重置器。 它会使他们的旧密码无效,并通过电子邮件向他们发送密码。 我有两个选择: POST /reset_password/{user_name} 或者... POST /reset_password -Username passed through request body 我很确定请求应该是POST。 我不太自信选择了合适的名字。 而且我不确定user_name是否应该通过URL或请求正文传递。 回答1 更新:(以下进一步评论) 我会去这样的事情: POST /users/:user_id/reset_password 您有一个用户集合,其中单个用户由{user_name}指定。 然后,您将指定要执行的操作,在本例中为reset_password 。 这就像说“为{user_name}创建( POST )一个新的reset_password操作”。 先前的答案: 我会去这样的事情: PUT /users/:user_id/attributes/password -- The "current password" and the "new password" passed through the body 您将有两个集合,一个用户集合,以及每个用户的一个属性集合。 用户由:user
  • 使用PHP在电子邮件中发送多个附件(Sending multiple attachment in an email using PHP)
    问题 我在发送带有多个附件的电子邮件时遇到问题。 这是代码: <?php if(isset($_POST['sendEmail'])) { foreach($_FILES['uploadEmail']['error'] as $key=>$value){ if(!$_FILES['uploadEmail']['error'][$key]){ $target_path = ""; $target_path = $target_path . basename( $_FILES['uploadEmail']['name'][$key]); if(move_uploaded_file($_FILES['uploadEmail']['tmp_name'][$key], $target_path)){ $files[] = $_FILES['uploadEmail']['name'][$key]; } } } $toEmails = explode(",",$_POST['toEmail']); $count = count($toEmails); $i = 0; $j = 1; $k = 100; $bcc = ''; while($i<$count){ $bcc .= $toEmails[$i].","; if($j==$k || $i==$count-1){ $j=1; //echo
  • 如何从JavaScript发送电子邮件(How to send an email from JavaScript)
    问题 我希望我的网站能够发送电子邮件而不刷新页面。 所以我想使用Javascript。 <form action="javascript:sendMail();" name="pmForm" id="pmForm" method="post"> Enter Friend's Email: <input name="pmSubject" id="pmSubject" type="text" maxlength="64" style="width:98%;" /> <input name="pmSubmit" type="submit" value="Invite" /> 这是我要调用的函数的方式,但是我不确定要在javascript函数中放入什么。 通过研究,我发现了一个使用mailto方法的示例,但我的理解是实际上并没有直接从站点发送邮件。 所以我的问题是,我在哪里可以找到要放在JavaScript函数中的内容,以便直接从网站发送电子邮件。 function sendMail() { /* ...code here... */ } 回答1 您不能直接使用javascript发送电子邮件。 但是,您可以打开用户的邮件客户端: window.open('mailto:test@example.com'); 还有一些参数可以预填充主题和身体: window.open('mailto
  • 如何使用ng-pattern在angularJs中验证电子邮件ID(How to validate email id in angularJs using ng-pattern)
    问题 我正在尝试使用ng-pattern指令验证angularJs中的Email id字段。 但是对AngularJs来说是新手。 用户输入错误的电子邮件ID后,我需要立即显示错误消息。 我下面的代码正在尝试解决。 帮助我使用ng-pattern获得正确的结果。 <script type="text/javascript" src="/Login/script/ang.js"></script> <script type="text/javascript"> function Ctrl($scope) { $scope.text = 'enter email'; $scope.word = /^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/; } </script> </head> <body> <form name="myform" ng-controller="Ctrl"> <input type="text" ng-pattern="word" name="email"> <span class="error" ng-show="myform.email.$error.pattern"> invalid email! </span> <input type="submit" value="submit"> </form> </body> 回答1
  • 如何保护 Ajax 链接请求?(How to secure Ajax link requests?)
    问题 想象下一个场景:用户想要注册网页并填写表格。 当他填写表单时,jQuery 会不断通过正则表达式检查字段是否有效等...... 将电子邮件作为用户注册登录后将使用的主键,需要使用 Ajax 检查电子邮件字段以让用户知道该电子邮件是否已注册。 我想使用Ajax进行检查,以避免发送完整的表单并清空它,刷新页面等。 因此,当用户结束填写电子邮件字段时,Ajax 请求将发送到服务器,类似于下一个链接: example.com/check.php?email=abcdefg@gmail.com 当 check.php 收到电子邮件时,它会询问数据库是否存在,并返回如下消息:如果用户存在,则用户User already exists如果用户不存在,则返回null 。 问题是:如果有人在我的 .js 中挖掘并找到类似的链接,他们可以使用该链接发送大量请求,以确定这些随机电子邮件是否存在。 这可能导致数据库的大量使用,或者在最坏的情况下甚至崩溃和私人信息泄漏。 有人可以做一个巨大的 for 循环来检查电子邮件,例如: //Getting the response of the next links example.com/check.php?email=aaaaaaa@gmail.com // Returns null example.com/check.php?email=aaaaaab
  • 如何在不打开邮件客户端的情况下使用JavaScript发送电子邮件?(How do I send email with JavaScript without opening the mail client?)
    问题 我正在编写一个带有注册按钮的HTML页面,该按钮应该仅以静默方式发送电子邮件,而无需打开本地邮件客户端。 这是我的HTML: <form method="post" action=""> <input type="text" id="email_address" name="name" placeholder="Enter your email address..." required> <button onclick="sendMail(); return false">Send Email</button> </form> ...这是我的JavaScript代码: <script type="text/javascript"> function sendMail() { var link = 'mailto:hello@domain.com?subject=Message from ' +document.getElementById('email_address').value +'&body='+document.getElementById('email_address').value; window.location.href = link; } </script> 上面的代码有效...但是它打开了本地电子邮件客户端。
  • Symfony 1.4邮件中的电子邮件正文?(Email body in Symfony 1.4 mailer?)
    问题 我正在使用Symfony 1.4邮件程序,在其中构建电子邮件所需的各种位,然后使用以下命令将其发送出去: $this->getMailer()->composeAndSend($sender, $recipient, $subject, $body); 在电子邮件正文中,我需要能够利用操作中生成的变量,因此现在我可以在操作中使用它: $body = 'Your username is '.$username.' and this is the email body.'; 有谁知道一种优雅的方式来存储/组织各种电子邮件正文,而不必像这样直接将它们编码为我的操作? 我将有许多电子邮件模板,并且还将以多种语言提供它们。 我找到了一个讨论此问题的旧式Askeet教程,但它与SwiftMailer的新symfony 1.4集成似乎有些过时了,SwiftMailer文档本身对此也不是很清楚。 谢谢你。 回答1 我将电子邮件正文存储为模板文件,并通过sfPartialView呈现它们。 例如,在一个动作中: $view = new sfPartialView($this->getContext(), $this->getModuleName(), $this->getActionName(), 'confirmation_mail'); $view->setTemplate('
  • android-如何将文本格式设置为电子邮件客户端的电子邮件正文中的表格(android - How to format the text as table in email body of email client)
    问题 我必须将文本格式设置为电子邮件客户端的电子邮件正文中的表格。 但是我在某个地方没有读到android 支持<table>标签。 还有其他替代方法吗? 我尝试了很多,但仍然找不到任何好的解决方案。 请任何人能帮助我。 code 字符串正文=“ <表边框=” +“ 1” +“> <tr> <td>第1行,单元格1 </ td>” +“ <td>第1行,单元格2” +“ </ tr>” +“ <tr>” +“ <td>第2行,单元格1 </ td>” +“ <td>第2行,单元格2 </ td>” +“ </ tr>” +“ </ table>” ; final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("text/html"); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject.getText()); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body).toString()); startActivity(Intent.createChooser
  • 使用SendMailR将电子邮件数据帧作为电子邮件正文中的表(Email dataframe as table in email body with SendMailR)
    问题 我正在尝试使用SendMailR发送数据帧。 我可以将其作为附件发送,格式合理。 但是我想在电子邮件正文中发送数据帧。 我尝试了capture.output,print,sprintf,但什至无法关闭格式。 例如我尝试了以下语法 for (i in 1:nrow(df)){ MSG = c(MSG,rownames(df)[1],as.character(unlist(df[i,])),'\n') } MSG = sprintf('%-10s',MSG) sendmail(from,to,subject,msg = list(MSG,attachment1,attachment2 ... )) 换句话说,我认为可能有必要将我的数据框转换为具有/ n和sprintf('s-10%')等格式,并将其存储在MSG中。 有人可以指出我正确的方向吗? 回答1 尽管使用sendmailR发送HTML邮件不是一件容易的事,但是基于去年与软件包作者的邮件讨论(可能再次感谢Olaf Mersmann的帮助),这是可能的-只需覆盖Content-Type标头即可。 例如: msg <- mime_part('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD
  • 使用Gmail API检索HTML中的电子邮件/邮件正文(Retrieve email/message body in html using Gmail API)
    问题 有没有什么方法可以使用GMail api检索html形式的邮件正文? 我已经查看了message.get文档。 尝试将format参数更改为full , minimal和raw 。 但这并没有帮助。 它返回邮件正文的纯文本。 格式值说明: “完整”:在有效负载字段中返回已解析的电子邮件内容,而未使用原始字段。 (默认) “最小”:仅返回电子邮件元数据,例如标识符和标签,不返回电子邮件标头,正文或有效负载。 “原始”:以字符串形式返回原始字段中的整个电子邮件内容,并且不使用有效负载字段。 这包括标识符,标签,元数据,MIME结构和较小的正文部分(通常小于2KB)。 我们不能简单地以html形式获取消息正文,还是有其他方法可以使邮件在我的应用程序或GMail中看到时以最小的差异显示在屏幕上? 回答1 同时具有HTML和纯文本内容的电子邮件将具有多个有效负载部分,而mimeType为“ text / html”的部分将包含HTML内容。 您可以使用以下逻辑找到它: var part = message.parts.filter(function(part) { return part.mimeType == 'text/html'; }); var html = urlSafeBase64Decode(part.body.data); 回答2
  • mailto:电子邮件客户端中的主题= 和正文= 支持(mailto: subject= and body= support in email clients)
    问题 有谁知道在发送 html 时事通讯时,主要电子邮件客户端是否对 mailto 标签的 subject= 和 body= 部分提供什么样的支持? 回答1 行为因电子邮件客户端和源应用程序而异。 这是我自己系统中的一个可能足够的示例,使用pjp的链接。 <a href="mailto:me@somewhere.com?subject=Hello%20People">Send Mail</a> 在 Outlook 客户端中遵循的 Mailto 链接成功填写主题在 IE 中遵循的 Mailto 链接成功填充 Outlook 客户端的主题在 Firefox 中遵循的 Mailto 链接对于相同的 Outlook 客户端失败(主题文本仍然是“TO”字段的一部分) 我在 gmail 和 Yahoo 网络客户端读取的 HTML 电子邮件中尝试了相同的链接。 Gmail 正确打开带有所需主题的新邮件雅虎预填充主题,但在空格处截断(仅限“你好”) 仅在一台计算机上的如此多的变化使得嵌入式邮件难以使用。 我敢打赌,这就是为什么许多电子邮件通讯在标题中提供“作为网页查看”链接的原因。 回答2 我想他们已经得到了很好的支持。 但!! 但是 mailto 将用于从客户端发送和发送电子邮件到 me@somewhere.com 。 那绝对不是您发送时事通讯。 您必须从服务器发送电子邮件,可能是在后台进程中。
  • 我可以放一个… HTML文件正文中的标签以发送电子邮件?(Can I put a <style>…</style> tag within the body of a HTML file to send in email?)
    问题 由于许多电子邮件客户端都忽略HEAD标签,因此我可以在主体中嵌入内联样式表吗? 回答1 最简洁的答案是不。 Gmail会删除标签及其内容。 Hotmail,雅虎! 邮件和Windows Live Mail不会在正文元素中删除样式标签。 但是,请在Campaign Monitor上查看HTML电子邮件的“ CSS终极指南”。 回答2 您可能想查看CampaignMonitor和MailChimp(编辑:和Ink by Zurb)提供的免费html电子邮件模板: http://www.campaignmonitor.com/templates/ http://www.mailchimp.com/resources/templates/ http://zurb.com/ink/ 这里有Campaign Monitor的帮助指南的更新版本:http://www.campaignmonitor.com/css/ 不幸的是,在电子邮件中使用的最可靠的HTML完全是石器时代。 编辑:油墨有一个“内衬”工具,它接受style标签的内容并将它们内联到适当的元素上:http://zurb.com/ink/inliner.php 回答3 创建在每个电子邮件客户端中都能使用的HTML电子邮件非常困难。 我花了几个月的时间来完善外观漂亮的模板。 http://commadot.com/the-holy
  • 提交表单而无需重新加载页面(Submit form without page reloading)
    问题 我有一个分类广告网站,在显示广告的页面上,我正在创建“向朋友发送提示”表单... 因此,任何想要的人都可以将广告提示发送给某些朋友的电子邮件地址。 我猜该表格必须提交到php页面,对吗? <form name='tip' method='post' action='tip.php'> Tip somebody: <input name="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/> <input type="submit" value="Skicka Tips"/> <input type="hidden" name="ad_id" /> </form> 提交表单时,页面被重新加载...我不想要... 有什么办法可以使它不重新加载并仍然发送邮件? 最好没有ajax或jquery ... 谢谢 回答1 您需要提交ajax请求来发送电子邮件,而无需重新加载页面。 看看http://api.jquery.com/jQuery.ajax/ 您的代码应类似于以下内容: $('#submit').click(function() { $.ajax({ url: 'send_email.php', type: 'POST', data: { email: 'email
  • 使用jQuery $ .ajax()时如何使用GET在请求正文中发送数据(How to send data in request body with a GET when using jQuery $.ajax())
    问题 我正在使用的服务API具有给定的GET方法,该方法要求在请求的正文中发送数据。 正文中所需的数据是用连字符分隔的ID列表,并且可能非常大,因此必须在正文中发送,否则它可能会在浏览器/代理/网络服务器等链中的某处出现foobar。 请注意,我无法控制服务或API,因此请不要提出更改建议。 我正在使用以下jQuery代码,但是在提琴手中观察请求/响应,尽管我将“ processData”选项设置为false,我仍然可以看到我发送的“数据”总是被转换并附加到查询字符串中。 $.ajax({ url: "htttp://api.com/entity/list($body)", type: "GET", data: "id1-id2-id3", contentType: "text/plain", dataType: "json", processData: false, // avoid the data being parsed to query string params success: onSuccess, error: onError }); 有谁知道我可以如何强制在请求正文中发送“数据”值? 感谢您的任何帮助,在此先感谢。 回答1 通常,这不是系统使用GET请求的方式。 因此,很难让您的库发挥作用。 实际上,该规范说:“如果请求方法是GET或HEAD的区分大小写的匹配项
  • Google 应用程序脚本 Gmail 在没有先前对话的情况下获取消息(Google apps script Gmail get message without previous conversation)
    问题 我正在尝试使用谷歌应用程序脚本将特定标签下的电子邮件转储到谷歌文档电子表格。 我想将线程中的每个电子邮件正文作为单独的行列出,这样如果一个线程有 9 条消息链,则每条消息都单独列出(没有链)在一行中。 我已经设法将它带到每个消息正文 + 其整个前一个线程的存储位置,在一个单元格中,我可以在一个单元格中获取整个线程。 但这不是我想要的。 这段代码会将整个线程体排成一行。 function getEmails() { clearCanvas(); var label = GmailApp.getUserLabelByName(LabelWithEmails); var threads = label.getThreads(); // var threads = GmailApp.getInboxThreads(0, 50); var row = getFirstRow() + 1; var firstmessageId = getfirstmsgid(); UserProperties.setProperty("firstmsgid", firstmessageId); spreadsheet.toast("Loading emails..Please wait. It could take few seconds", "Status", -1); var messages =
  • 使用断线复制到剪贴板(Copy to clipboard with break line)
    问题 我想将文本复制到剪贴板,但换行。 问题: 如果您单击摘要中的按钮并粘贴在记事本中,那么您将获得: 名称:testSurname:test电子邮件:test@gmail.com地址:testCity:testCountry:nullAd类别:testPlan:null网站:公司名称:testΜήνυμα:test 我想要的是: 如果可能的话,我想在换行符中复制文本。 与复制时相同: 名称:测试姓:测试电子邮件:test@gmail.com ... function copyToClipboard(element) { var $temp = $("<input>"); $("body").append($temp); $temp.val($(element).text()).select(); document.execCommand("copy"); $temp.remove(); } $( "#FailCopy" ).click(function() { alert("Well done! div #error-details has been copy to your clipboard, now paste it in the notepad or email!"); }); <script src="https://ajax.googleapis.com/ajax
  • Jenkins:在电子邮件正文中报告中间[windows batch]构建步骤的结果(Jenkins : Report results of intermediate [windows batch] build steps in email body)
    问题 作为Jenkins构建过程的一部分,我们运行了几个Windows批处理脚本,并希望在Jenkins最后发送的电子邮件中报告有关这些中间步骤的一些信息。 我认为一种简单的方法是在批处理步骤中设置Windows环境变量,我们设法使用PowerShell进行了设置,如下所示: powershell.exe -Command "& {[Environment]::SetEnvironmentVariable('ThisIsATest', 'TestValue', 'Machine')}" 在“执行Windows批处理命令”构建步骤中执行时,这将正确地“最终”设置环境变量。 这就是说,如果我远程访问构建服务器,则可以验证该值是否在每次构建期间均已按预期创建/修改。 但是,尝试通过添加“ Our test value: ${ENV, var="ThisIsATest"} “默认内容”部分中的“错误”不会给出正确的结果。 使用 Print full environment: ${ENV} 还显示该值具有“尚未” 被创建。 甚至更奇怪的是,即使我在远程会话中可以清楚地看到它(并跟踪它的变化等),多次运行也根本不会拾取有问题的环境变量。 问题: 还有其他方法可以实现我们的目标: “在正常/失败的地方进行编译/单元测试时报告一般成功/失败,还报告电子邮件正文中的中间步骤的其他信息”? 或者
  • Tiles Framework:仅刷新正文内容(Tiles Framework : refresh only body content)
    问题 我们有一个包含页眉、菜单、正文和页脚的 Tiles 布局页面。 在此布局中,每当用户在菜单列表中执行某些操作时,整个布局(包括页眉、菜单和页脚)都会令人耳目一新。 我希望页眉、菜单、页脚是静态的,并且只有正文部分应该更新。 有什么方法可以防止刷新页眉、菜单和页脚,并仅更新菜单单击上的正文内容,这可以使用 Tiles 实现? 回答1 为此,您需要使用 ajax 调用。 一般程序是: 1.- 创建并定义一个磁贴,作为您的基础,由页眉、正文和页脚组成,如下所示: <div id='headerTile'>whatever goes here...</div> <!--this is baseHeader.jsp--> <div id='bodyTile'>whatever goes here....</div> <!--this is baseBody.jsp--> <div id='footerTile'>whatever goes here...</div> <!--this is baseFooter.jsp--> 让我们将这些 div 中的每一个视为您定义中的一个 tile: <definition name="layoutBase" path="/whateverPathItIs/layoutBase.jsp"> <put name="header" value="
  • 使用phpMailer和PHP从表单发送文件附件(Send File Attachment from Form Using phpMailer and PHP)
    问题 我在example.com/contact-us.php上有一个看起来像这样的表格(简化): <form method="post" action="process.php" enctype="multipart/form-data"> <input type="file" name="uploaded_file" id="uploaded_file" /> <input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> </form> 在我的process.php文件中,我有以下代码利用PHPMailer()发送电子邮件: require("phpmailer.php"); $mail = new PHPMailer(); $mail->From = me@example.com; $mail->FromName = My name; $mail->AddAddress(me@example.com,"John Doe"); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = "Contact Form Submitted"; $mail->Body = "This is the body of the message."; 电子邮件正确发送了正文