【问题标题】:How to send email with attachment using mysql query如何使用 mysql 查询发送带附件的电子邮件
【发布时间】:2012-07-23 11:33:37
【问题描述】:

有没有一种方法可以使用 mysql 发送带有附件的电子邮件?目前我可以使用 mysql 发送电子邮件,但没有附件。 我需要包含一个来自硬盘的 docx 附件。

我创建了一个 eml 文件并将其发送到 IIS (Inetpub),以便它可以获取电子邮件。这是电子邮件通知的工作代码:

SET @sqlString = CONCAT("SELECT 'To:test@email.com', ",
       "'From: test@email.com', ",
        "'Subject: test', ",
        "'\r\n'",
        "'test'",
        "INTO OUTFILE 'C:/Inetpub/mailroot/Pickup/mail_", CAST(RAND() * (100000 - 1) + 1 AS CHAR(64)), ".eml' FIELDS TERMINATED BY '\r\n' ESCAPED BY ''");

  PREPARE stmt FROM @sqlString;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

现在我需要一个附件。这是我尝试的努力...

   SET @sqlString = CONCAT("SELECT 'To:test@email.com', ",
       "'From: test@email.com', ",
        "'Subject: test', ",
        "'Content-Type: application/octet-stream; name=\"C:/text.docx\"',",
    "'Content-Transfer-Encoding: base64',",
    "'Content-Disposition: attachment; filename=\"C:/text.docx\"',",
        "'\r\n'",
        "'test'",
        "INTO OUTFILE 'C:/Inetpub/mailroot/Pickup/mail_", CAST(RAND() * (100000 - 1) + 1 AS CHAR(64)), ".eml' FIELDS TERMINATED BY '\r\n' ESCAPED BY ''");

    PREPARE stmt FROM @sqlString;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

但它只创建一个 docx 文件并没有获取正确的文件。它还删除了正文。

是否有可能的方法来附加文件。非常感谢您的帮助

【问题讨论】:

  • 天哪...不要这样做。 MySQL 没有 base64 编码功能。你不想自己写一个。请改为在客户端应用程序中执行此操作。手动生成 mime 电子邮件也是一种严重的痛苦。
  • @Marc B 感谢您的回复和关注。但我需要安排电子邮件通知。
  • 正确的编程语言可以比您通过 SQL 查询更容易地构建/发送电子邮件,并且还可以进行安排。同样,不要在数据库中这样做。
  • @MarcB 感谢您的建议,我想我必须真正坚持基础,不要滥用 mysql 呵呵。我现在使用 php 处理电子邮件。虽然我的存储过程保存了电子邮件的重要细节(收件人、发件人、主题、消息、路径等)

标签: mysql email iis stored-procedures email-attachments


【解决方案1】:

可能是在表中插入一条记录,并使用更通用的编程语言定期检查该表是否有新记录以发送您的电子邮件。

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 2021-02-08
    • 2011-01-02
    • 2015-08-28
    • 2016-10-23
    • 2012-01-15
    • 1970-01-01
    相关资源
    最近更新 更多