jjzjj

php - 带有 + 的电子邮件如何工作,例如 "support+id160211@somedomain.com"

coder 2024-04-17 原文

这些动态电子邮件如何运作?这个 + 符号在电子邮件地址中的作用是什么。

似乎接收这些电子邮件的不是真正的电子邮件收件箱。

我的想法是,当我在某处阅读它时,它们会转到“support@somedomain.com”。但是那有什么意义呢。我经常看到这种情况,您打开一些支持票或线程,您可以直接回复收到的电子邮件,您的电子邮件回复会添加到线程/票中。

但我仍然不明白它在幕后是如何工作的。

我希望在我的应用程序中实现类似的功能,用户可以在其中回复我们发送的电子邮件(我不确定在发送原始邮件时我应该为回复地址添加什么),然后我想捕获在我的脚本中以某种方式回复或阅读它,以便我可以将其保存为对线程的评论。

我使用 sendmail 发送电子邮件,目前发件人地址设置为“support@somedomain.com”。somedomain.com 是从 bluehost 购买的,它的 mx 记录设置为由 google apps 提供的记录。

而且我不知道我的下一步是什么。

最佳答案

+ 符号和它后面的任何东西都应该被忽略。这是面向最终用户(电子邮件地址所有者)的功能。

这允许 user@gmail.com 注册 user+stackoverflow@gmail.com 并向 user@gmail.com 发送电子邮件,但是允许收件人查看它的注册位置。如果地址被传递(例如,传递给垃圾邮件发送者),那么您可以看到您的地址的来源。

尽管它是 RFC 5322 中的标准,但并非所有(事实上,很少)MTA 都支持它和 RFC 5233 .

RFC 5322告诉我们只要它们充当“标记化点”(即不是@符号之前用户的开始或结束),就允许以下内容:

! # $ % & ' * + - / = ?  ^ _ ` . { | } ~

gMail supports this ,但这是我所知道的唯一一个。


你说你想实现电子邮件到 PHP。我建议您有两种选择:

  1. php.net/imap
    将所有电子邮件定向到 IMAP 邮箱并使用 PHP 打开邮箱,阅读电子邮件并传递它的内容。简单、可靠(因为电子邮件始终被存储)但不是即时的(这可能每 n 分钟由 cron 触发)。

  2. Email Piping
    如果您有权管理您的服务器或 cPanel,那么您可以将电子邮件定向到 PHP 脚本以阅读电子邮件。这是即时的,但需要在服务器上进行更多配置,如果脚本不可用,则电子邮件将被退回。

我自己使用选项 2,因为即时解析电子邮件对我来说更重要。

要在电子邮件中存储标识符(在本例中为线程 ID),您可以按照您的建议使用 reply-to 地址(使用 support+12345@domain.com,其中 support@domain.com 是电子邮件地址,12345 是线程 ID)或者您可以将线程 ID 存储在电子邮件的主题或正文中。

在我的情况下,我使用 abc123@subdomain.domain.comabc123 是我需要的哈希值(在你的例子中是用户 id 和线程 id)发送到 *@subdomain.domain.com 的任何电子邮件都定向到 Web 服务器,而 Web 服务器又定向到 PHP 电子邮件管道脚本。

您可以选择要走的路线,但那里的链接可以帮助您走得更远。

关于php - 带有 + 的电子邮件如何工作,例如 "support+id160211@somedomain.com",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36128848/

有关php - 带有 + 的电子邮件如何工作,例如 "support+id160211@somedomain.com"的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  5. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  8. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  9. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  10. ruby - RVM "ERROR: Unable to checkout branch ."单用户 - 2

    我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas

随机推荐