PHP使用POP3读取邮箱接收邮件的示例代码

2025-05-29 0 77

直接上代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97
<?php

$array_values['host'] = "host";

$array_values['port'] = 110;

$array_values['user'] = '用户名';

$array_values['password'] = '密码';

$array_values['checkmail'] = 'xxx@xxx.xxx';

ganji_get_test_mail($array_values);

function ganji_get_test_mail($array_values)

{

$host = $array_values['host'];

$port = $array_values['port'];

$user = $array_values['user'];

$password = $array_values['password'];

$checkmail = $array_values['checkmail'];

$msg = '';

$return_msg = '';

// ini_set('memory_limit', '80M');

if (! ($sock = fsockopen(gethostbyname($host), $port, $errno, $errstr))) {

exit($errno . ': ' . $errstr);

}

set_socket_blocking($sock, true);

$command = "USER " . $user . "\\r\\n";

fwrite($sock, $command);

$msg = fgets($sock);

$command = "PASS " . $password . "\\r\\n";

fwrite($sock, $command);

$msg = fgets($sock);

$command = "stat\\r\\n";

fwrite($sock, $command);

$return_msg = fgets($sock);

$msg = fgets($sock);

$command = "LIST\\r\\n";

fwrite($sock, $command);

$all_mails = array();

while (true) {

$msg = fgets($sock);

if (! preg_match('/^\\+OK/', $msg) && ! preg_match('/^\\./', $msg)) {

$msg = preg_replace('/\\ .*\\r\\n/', '', $msg);

array_push($all_mails, $msg);

}

if (preg_match('/^\\./', $msg))

break;

}

// 获取邮件列表

$ganji_mails = array();

foreach ($all_mails as $item) {

fwrite($sock, "TOP $item 0\\r\\n");

while (true) {

$msg = fgets($sock);

// echo $msg . "<Br><Br>";

if (preg_match('/^\\./', $msg)) {

array_push($ganji_mails, $item);

break;

}

}

continue;

}

$mail_content = '';

$array_ganji_mails = array();

//逐行遍历

foreach ($ganji_mails as $item) {

fwrite($sock, "RETR $item\\r\\n");

while (true) {

$msg = fgets($sock);

$mail_content .= $msg;

if (preg_match('/^\\./', $msg)) {

array_push($array_ganji_mails, iconv_mime_decode_headers($mail_content, 0, "UTF-8"));

$mail_content = '';

break;

}

}

}

// 直接获取第一封邮件全部信息 9999长度

fwrite($sock, "RETR 1\\r\\n");

$mail_contents = fread($sock, 9999); // 直接获取全部

echo "<br>";

var_dump($mail_contents);

echo "<br>";

$command = "QUIT\\r\\n";

fwrite($sock, $command);

$msg = fgets($sock);

return $mail_contents;

}

常用的POP3命令介绍 :

命令 参数 状态 描述
USER username 认可 此命令与下面的pass命令若成功,将导致状态转换
PASS password  认可
APOP Name,Digest 认可 Digest是MD5消息摘要
STAT None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST [Msg#] 处理 返回邮件数量和每个邮件的大小
RETR [Msg#] 处理 返回由参数标识的邮件的全部文本
DELE [Msg#] 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP None 处理 服务器返回一个肯定的响应,不做任何操作。
QUIT None 更新 退出

以上就是PHP使用POP3读取邮箱接收邮件的示例代码的详细内容,更多关于PHP读取邮箱接收邮件的资料请关注快网idc其它相关文章!

原文链接:https://www.cnblogs.com/crxis/p/12844850.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP使用POP3读取邮箱接收邮件的示例代码 https://www.kuaiidc.com/90878.html

相关文章

发表评论
暂无评论