帮酷LOGO
  • 显示原文与译文双语对照的内容
Eden POP3, IMAP and SMTP component

  • 源代码名称:Mail
  • 源代码网址:http://www.github.com/Eden-PHP/Mail
  • Mail源代码文档
  • Mail源代码下载
  • Git URL:
    git://www.github.com/Eden-PHP/Mail.git
  • Git Clone代码到本地:
    git clone http://www.github.com/Eden-PHP/Mail
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/Eden-PHP/Mail
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • logo Eden邮件

    Build Status

    安装

    composer install eden/mail

    为了使用

    启用伊甸园

    以下文档在它的示例参考中使用了 eden() 。 如果你使用以下方法访问这个包,那么启用这个函数需要额外的步骤作为这个部分的descirbed 。

    EdenCoreControl::i();

    使用 Composer 时,不能简单地从包访问函数。 在代码中添加这个常量,将允许 eden() 在。

    Eden::DECORATOR;

    例如:

    Eden::DECORATOR;
    eden()->inspect('Hello World');

    简介

    Eden运动三种常见的与邮件服务器交互的方法,包括 SMTP 。IMAP和 POP3 。 访问每个协议在 Figure 1 中可以是 acheived 。

    图 1.工厂

    $imap = eden('mail')->imap(
     'imap.gmail.com', 
     'your_email@gmail.com', 
     '[YOUR PASSWORD]', 
     993, 
     true);
    $pop3 = eden('mail')->pop3(
     'pop.gmail.com', 
     'your_email@gmail.com', 
     '[YOUR PASSWORD]', 
     995, 
     true);
    $smtp = eden('mail')->smtp(
     'smtp.gmail.com', 
     'your_email@gmail.com', 
     '[YOUR PASSWORD]', 
     465, 
     true);

    对于这三个协议,需要四个需求,并且所有要求都依赖于你的特定电子邮件提供者。 在上面的图中,我们将GMAIL设置作为。 最后一个参数是一个标志。 如果你的电子邮件提供商要求 SSL,请将它的设置为 true 。

    IMAP

    IMAP对象的在IMAP函数中使用了 fsocket() 而不是构建 php 。 由于性能原因,我们选择使用 fsocket() 。 你将发现设置IMAP的总体轻松与的伊甸园。Figure 2 显示如何设置IMAP对象。

    图 2.设置IMAP对象

    $imap = eden('mail')->imap(
     'imap.gmail.com', 
     'your_email@gmail.com', 
     '[YOUR PASSWORD]', 
     993, 
     true);

    很简单,需要四个需求,所有需求都依赖于你的特定电子邮件提供商。 在上面的图中,我们将GMAIL设置作为。 最后一个参数是一个标志。 如果你的电子邮件提供商要求 SSL,请将它的设置为 true 。

    电子邮件邮箱

    接下来我们要知道的是可用的邮箱,我们可以设置为活动邮箱。 获取邮箱的列表遵循 Figure 3

    图 3 。邮箱列表

    $mailboxes = $imap->getMailboxes(); 

    执行上面的命令将给你以下结果。

    Array (
     [0] => Deleted Messages
     [1] => Drafts
     [2] => INBOX
     [3] => Junk E-mail
     [4] => Notes
     [5] => Sent Messages
     [6] => Trash
     [9] => [Gmail]/All Mail
     [10] => [Gmail]/Drafts
     [11] => [Gmail]/Important
     [12] => [Gmail]/Personal
     [13] => [Gmail]/Sent Mail
     [14] => [Gmail]/Spam
     [15] => [Gmail]/Starred
     [16] => [Gmail]/System
     [17] => [Gmail]/Trash
     [18] => [Gmail]/Unsorted
    )

    我们查看的每台邮件服务器都有收件箱文件夹。 所以当有疑问时,我们会说这应该是默认的活动邮箱。 接下来,我们将收件箱设置为活动邮箱。 Figure 4 显示了如何在一行中设置和检索活动邮箱。

    图 4.先设置活动邮箱

    echo $imap->setMailboxes('INBOX')->getActiveInbox();//--> INBOX 

    电子邮件电子邮件

    现在我们已经设置了活动邮箱,现在可以继续获取电子邮件列表了。 Figure 5 展示了我们将如何做。

    图 5.获取电子邮件列表列表

    $emails = $imap->getEmails(0, 3); 
    $count = $imap->getEmailTotal(); 

    执行上面的图将产生与下面的代码Fragment相似的结果。

    图 5.电子邮件结果

    Array (
     [0] => Array
     (
     [id] => <50041ab1c9383_178f6b3294527919f@job01.tmail>
     [parent] => 
     [topic] => Trending Startups and Updates
     [mailbox] => INBOX
     [uid] => 22363
     [date] => 1342446257
     [subject] => Trending Startups and Updates
     [from] => Array( [name] => AngelList [email] => noreply@angel.co )
     [flags] => Array ( [0] => seen )
     [to] => Array ( [0] => Array( [email] => youremail@gmail.com ) )
     [cc] => Array()
     [bcc] => Array()
     )
    . . .
    )

    你可能已经意识到,电子邮件列表没有包含完整的正文,也没有附件。 标准的 IMAP实践说明你不应该尝试获得详细的列表,因为仅仅数据的大小可能需要很长时间。 当用户特别调用操作来查看主体时,应该检索完整的详细信息。 Figure 6 展示了我们如何获得电子邮件的细节。

    图 6.获取完整的电子邮件详细信息

    $email = $imap->getUniqueEmails(22363, true); 
    echo $email['body']['text/html'];

    在图中,我们调用 getUniqueEmails() 第一个参数应该是在 Figure 5a 中找到的惟一标识符( UID ) 。 第二个参数是,如果你想要的是身体,那么这个 true 通常。 你可以通过以下方式得到一组由uid分隔的电子邮件。

    图1.获取多个电子邮件细节信息

    $emails = $imap->getUniqueEmails(array(22363, 22364), true);

    在列表请求中包括正文和附件肯定需要很长时间,不推荐使用。

    全文搜索

    搜索邮件遵循基本的IMAP格式进行搜索。 可以在 Figure 7 中找到如何搜索的示例。

    图 7.搜索

    $emails = $imap->search(array('TO"youremail@gmail.com"'), 0, 3); 

    搜索仅限于活动邮箱中的电子邮件。 这是IMAP标准。 这里没有工作。

    搜索查询组合可以在下面引用:

    ALL - return all messages matching the rest of the criteria
    ANSWERED - match messages with the ANSWERED flag set
    BCC"string" - match messages with"string" in the Bcc: field
    BEFORE"date" - match messages with Date: before"date"
    BODY"string" - match messages with"string" in the body of the message
    CC"string" - match messages with"string" in the Cc: field
    DELETED - match deleted messages
    FLAGGED - match messages with the FLAGGED (sometimes referred to as Important or Urgent) flag set
    FROM"string" - match messages with"string" in the From: field
    KEYWORD"string" - match messages with"string" as a keyword
    NEW - match new messages
    OLD - match old messages
    ON"date" - match messages with Date: matching"date"
    RECENT - match messages with the RECENT flag set
    SEEN - match messages that have been read (the SEEN flag is set)
    SINCE"date" - match messages with Date: after"date"
    SUBJECT"string" - match messages with"string" in the Subject:
    TEXT"string" - match messages with text"string"
    TO"string" - match messages with"string" in the To:
    UNANSWERED - match messages that have not been answered
    UNDELETED - match messages that are not deleted
    UNFLAGGED - match messages that are not flagged
    UNKEYWORD"string" - match messages that do not have the keyword"string"
    UNSEEN - match messages which have not been read yet

    操作

    你可能希望执行的其他操作是移动电子邮件并删除电子邮件。 下面的图基本上展示了你可以使用Eden执行的其余操作。

    图 8.将电子邮件移动到另一个文件夹

    $imap->move(22363, 'Notes'); 

    图 9.删除电子邮件

    $imap->remove(22363, true); 

    图 10.请不要忘记断开连接

    $imap->disconnect(); 

    POP3

    POP3 POP3 POP3对象确实使用了,而不是在IMAP的IMAP函数中建立。 由于性能原因,我们选择使用 fsocket() 。 你将发现设置POP3的总体轻松与的伊甸园。Figure 11 显示如何设置POP3对象。

    图 11.设置POP3对象

    $pop3 = eden('mail')->pop3(
     'pop.gmail.com', 
     'your_email@gmail.com', 
     '[YOUR PASSWORD]', 
     995, 
     true);

    很简单,需要四个需求,所有需求都依赖于你的特定电子邮件提供商。 在上面的图中,我们将GMAIL设置作为。 最后一个参数是一个标志。 如果电子邮件提供商要求我们设置连接信息,那么设置为 true,我们现在可以继续得到一个电子邮件列表。 Figure 12 展示了我们将如何做。

    图 12.获取电子邮件

    $emails = $pop3->getEmails(0, 10); 
    $count = $pop3->getEmailTotal();

    执行上面的数字将返回电子邮件列表以及总计数。 你可能希望执行的其他操作是删除电子邮件。 下图显示了你可以使用 Eden执行的其他可能操作的其余部分。

    图 13.删除电子邮件

    $pop3->remove(100); 

    图 14.请不要忘记断开连接

    $pop3->disconnect(); 

    电子邮件地址

    Eden中的SMTP比较容易。 我们在SMTP函数中使用 fsocket() 而不是构建 php 。 因为php函数的mail() 很可能将你的邮件放入垃圾文件夹,所以我们选择使用 fsocket() 。 由于电子邮件发送的邮件是由你的实际邮件服务器而不是你的网站主机发送的,SMTP效果更好。 Figure 15 显示如何设置SMTP对象。

    图 15.设置SMTP对象

    $smtp = eden('mail')->smtp(
     'smtp.gmail.com', 
     'your_email@gmail.com', 
     '[YOUR PASSWORD]', 
     465, 
     true);

    很简单,需要四个需求,所有需求都依赖于你的特定电子邮件提供商。 在上面的图中,我们将GMAIL设置作为。 最后一个参数是一个标志。 如果你的电子邮件提供商要求 SSL,请将它的设置为 true 。 接下来的部分就是发送你的电子邮件。

    图 16.只需发送

    $smtp->setSubject('Welcome!')
     ->setBody('<p>Hello you!</p>', true)
     ->setBody('Hello you!')
     ->addTo('email1@gmail.com')
     ->addTo('email2@gmail.com')
     ->addCC('email3@gmail.com')
     ->addCC('email4@gmail.com')
     ->addBCC('email5@gmail.com')
     ->addBCC('email6@gmail.com')
     ->addAttachment('file.jpg', '/path/to/file.jpg', 'mime-type')
     ->send();

    Figure 16 中,我们基本上列出了你可以用来发送电子邮件的方法的所有可能组合。 设置 addTo() 方法至少一次是很重要的。

    图 17.请不要忘记断开连接

    $smtp->disconnect(); 

    对伊甸园的贡献

    Eden的贡献是遵循Github的工作流程。 请在投稿前阅读。

    使用Eden库和你的fork 建立你的机器

    • fork 存储库
    • 启动本地终端,从 fork的v4 分支创建一个新分支,用分支 NAME 描述所更改的内容。 可能的分支 NAME 类型:
    • 修正修正
    • 功能
    • 改进
    • 更改。总是确保在所有提交的提交消息"( -s ) 上签名

    请求请求

    • 请确保在发出请求请求前运行 phpunit
    • 将你的代码推送到你的远程分支版本。
    • 回到GitHub上的分支版本,提交一个请求请求。
    • Eden开发人员将检查你的代码并将它的合并为适合的情况。



    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语