首頁 php教程 PHP源码 socket方式发送邮件的类

socket方式发送邮件的类

May 25, 2016 pm 05:15 PM


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

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

class MailCls{

    private $mEmails;

     

    function setEmailInfo( $emails ){

        if( is_array( $emails ) ){

            $this->mEmails['email_to'] = $emails['email_to'];

            #对邮件标题进行处理

            if( isset( $emails['email_subject'] ) || !empty($emails['email_subject'])) {

                eval("$email_subject = "".$emails['email_subject']."";");

                $email_subject = str_replace(" ", '', str_replace(" ", '', $emails['email_subject'] ));

                $this->mEmails['email_subject'] = $emails['email_subject'];

            }

             

            #对邮件内容进行处理

            if( isset( $emails['email_message']) || !empty($emails['email_message'])) {

                eval("$email_message = "".$emails['email_message']."";");

                $emails['email_message'] = str_replace(" .", "  ..", str_replace(" ", " ", str_replace(" ", " ", str_replace(" ", " ", str_replace(" ", " ", $emails['email_message'])))));

                $this->mEmails['email_message'] = $emails['email_message'];

            }

             

            #对邮件来源进行处理

            if( isset($emails['email_from']) || !empty($emails['email_from']))

                $this->mEmails['email_from'] = $emails['email_from'];

            else

                $this->mEmails['email_from'] = '';

        }

    }

     

    function getEmails( $elements  ){

        if( isset( $elements ) || !empty( $elements ))

            return $this->mEmails[$elements];

        else

        return $this->mEmails;

    }

     

    function __destruct(){

        unset( $this );

    }

}

 

 

class sendMail extends MailCls{

    private $mMailCfg;

     

    function __construct( $mailcfg ){

        if(is_array( $mailcfg ))

            $this->mMailCfg = $mailcfg;

    }

     

    #发送邮件函数

    function sendMails( ){

        if(!$fp = fsockopen($this->mMailCfg['server'], $this->mMailCfg['port'], $errno, $errstr, 30)) {

                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) CONNECT - Unable to connect to the SMTP server, please check your "mail_config.php".", 0);

            }

         stream_set_blocking($fp, true);

 

        $lastmessage = fgets($fp, 512);

        if(substr($lastmessage, 0, 3) != '220') {

            errorlog('SMTP', "$this->mMailCfg[server]:$this->mMailCfg[port] CONNECT - $lastmessage", 0);

        }

 

        fputs($fp, ($this->mMailCfg['auth'] ? 'EHLO' : 'HELO')." hoodong ");

        $lastmessage = fgets($fp, 512);

         

        if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {

            errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) HELO/EHLO - $lastmessage", 0);

        }

 

        while(1) {

            $lastmessage = fgets($fp, 512);

            if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {

                 break;

             }

        }

 

        if($this->mMailCfg['auth']) {

            fputs($fp, "AUTH LOGIN ");

            $lastmessage = fgets($fp, 512);

             

            if(substr($lastmessage, 0, 3) != 334) {

                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) AUTH LOGIN - $lastmessage", 0);

        }

 

        fputs($fp, base64_encode($this->mMailCfg['auth_username'])." ");

        $lastmessage = fgets($fp, 512);

         

        if(substr($lastmessage, 0, 3) != 334) {

            errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) USERNAME - $lastmessage", 0);

        }

 

        fputs($fp, base64_encode($this->mMailCfg['auth_password'])." ");

        $lastmessage = fgets($fp, 512);

         

        if(substr($lastmessage, 0, 3) != 235) {

            errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) PASSWORD - $lastmessage", 0);

        }

 

        $email_from = $this->mMailCfg['from'];

    }

 

    fputs($fp, "MAIL FROM: ".preg_replace("/.*.*/", "\1", $this->getEmails('email_from'))." ");

    $lastmessage = fgets($fp, 512);

     

    if(substr($lastmessage, 0, 3) != 250) {

        fputs($fp, "MAIL FROM: getEmails('email_from'))."> ");

        $lastmessage = fgets($fp, 512);

        if(substr($lastmessage, 0, 3) != 250) {

            errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) MAIL FROM - $lastmessage", 0);

        }

    }

 

    foreach(explode(',', $this->getEmails('email_to')) as $to_user) {

        $to_user = trim( $to_user );

        if( $to_user ) {

            fputs( $fp, "RCPT TO: $to_user " );

            $lastmessage = fgets( $fp, 512 );

            if(substr($lastmessage, 0, 3) != 250) {

                fputs($fp, "RCPT TO:  ");

                $lastmessage = fgets($fp, 512);

                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) RCPT TO - $lastmessage", 0);

            }

        }

    }

 

    fputs($fp, "DATA ");

    $lastmessage = fgets($fp, 512);

    if(substr($lastmessage, 0, 3) != 354) {

        errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) DATA - $lastmessage", 0);

    }

 

     fputs($fp, "To: ".$this->getEmails('email_to')." From: ".$this->getEmails('email_from')." Subject: ".str_replace(" ", ' ', $this->getEmails('email_subject'))." ".$this->getEmails('email_message')." . ");

    fputs($fp, "QUIT ");

    }

     

    function getEmailCfg( $elements ){

        if(isset( $elements ) || !empty( $elements ))

            return $this->mMailCfg[$elements];

        else

            return $this->mMailCfg;

    }

     

    function __destruct(){

        unset($fp);

        unset($this);

    }

}

 

 

/*@调用演示.请设置下面信息@*/

#######################################################################

 

$emails = array(

'email_to' => 'injection.mail@gmail.com',                        #收件人地址

'email_subject' => 'test',                                #邮件标题

'email_message' => 'ksadasdasdasdsadasfafdasfdsaff',    #邮件正文

'email_from' => '',            #邮件来源

);

 

 

     

##########################################################################   

    

$mailcfg['server'] = 'smtp.gmail.com';            #smtp服务器地址   

    $mailcfg['port'] = '25';                            #smtp端口

    $mailcfg['auth'] = 1;                                #显示作者

    $mailcfg['from'] = 'gmail';    #发件人地址

    $mailcfg['auth_username'] = 'injection_at@hotmail.com';    #发件人邮箱

    $mailcfg['auth_password'] = '12345677';                #发件人邮箱密码

#调用:

$sm = new sendMail( $mailcfg );

$sm->setEmailInfo( $emails );

$sm->sendMails();

登入後複製

                   

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)