Laravel邮件发送问题小解

  在Laravel中已经有内置了发送邮件的功能,通过 Mail::send 可发送邮件,但要使用这个函数必须先进行相关配置。

  在 /app/config/mail.php 中设置你的邮件参数,如下:

   1 <?php
2 return array(
3
4 /*
5 |--------------------------------------------------------------------------
6 | Mail Driver
7 |--------------------------------------------------------------------------
8 |
9 | Laravel supports both SMTP and PHP's "mail" function as drivers for the
10 | sending of e-mail. You may specify which one you're using throughout
11 | your application here. By default, Laravel is setup for SMTP mail.
12 |
13 | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "log"
14 |
15 */
16
17 'driver' => 'smtp',
18
19 /*
20 |--------------------------------------------------------------------------
21 | SMTP Host Address
22 |--------------------------------------------------------------------------
23 |
24 | Here you may provide the host address of the SMTP server used by your
25 | applications. A default option is provided that is compatible with
26 | the Mailgun mail service which will provide reliable deliveries.
27 |
28 */
29
30 'host' => 'smtp.163.com',
31
32 /*
33 |--------------------------------------------------------------------------
34 | SMTP Host Port
35 |--------------------------------------------------------------------------
36 |
37 | This is the SMTP port used by your application to deliver e-mails to
38 | users of the application. Like the host we have set this value to
39 | stay compatible with the Mailgun e-mail application by default.
40 |
41 */
42
43 'port' => 25,
44
45 /*
46 |--------------------------------------------------------------------------
47 | Global "From" Address
48 |--------------------------------------------------------------------------
49 |
50 | You may wish for all e-mails sent by your application to be sent from
51 | the same address. Here, you may specify a name and address that is
52 | used globally for all e-mails that are sent by your application.
53 |
54 */
55
56 'from' => array (
57 'address' => 'xxx@163.com',
58 'name' => 'xxx@163.com'
59 ),
60
61 /*
62 |--------------------------------------------------------------------------
63 | E-Mail Encryption Protocol
64 |--------------------------------------------------------------------------
65 |
66 | Here you may specify the encryption protocol that should be used when
67 | the application send e-mail messages. A sensible default using the
68 | transport layer security protocol should provide great security.
69 |
70 */
71
72 'encryption' => 'tls',
73
74 /*
75 |--------------------------------------------------------------------------
76 | SMTP Server Username
77 |--------------------------------------------------------------------------
78 |
79 | If your SMTP server requires a username for authentication, you should
80 | set it here. This will get used to authenticate with your server on
81 | connection. You may also set the "password" value below this one.
82 |
83 */
84
85 'username' => 'xxx@163.com',
86
87 /*
88 |--------------------------------------------------------------------------
89 | SMTP Server Password
90 |--------------------------------------------------------------------------
91 |
92 | Here you may set the password required by your SMTP server to send out
93 | messages from your application. This will be given to the server on
94 | connection so that the application will be able to send messages.
95 |
96 */
97
98 'password' => 'xxx',
99
100 /*
101 |--------------------------------------------------------------------------
102 | Sendmail System Path
103 |--------------------------------------------------------------------------
104 |
105 | When using the "sendmail" driver to send e-mails, we will need to know
106 | the path to where Sendmail lives on this server. A default path has
107 | been provided here, which will work well on most of your systems.
108 |
109 */
110
111 'sendmail' => '/usr/sbin/sendmail -bs',
112
113 /*
114 |--------------------------------------------------------------------------
115 | Mail "Pretend"
116 |--------------------------------------------------------------------------
117 |
118 | When this option is enabled, e-mail will not actually be sent over the
119 | web and will instead be written to your application's logs files so
120 | you may inspect the message. This is great for local development.
121 |
122 */
123
124 'pretend' => false
125 );

  其中的 driver、host、port 和 encryption 等自己可以根据相应邮件服务器的属性来设置。

  在 Mail::send 中,需要注意其中的参数,如下:

 if (!$this->postUsernameCheck() && !$this->postEmailCheck())
{
$pwd = User::where('username', Input::get('username'))->where('email', Input::get('email'))->get();
$msg = Input::get('username') . " , your password is : " . Hash::make($pwd[0]->password);
$messageData = array('msgnext' => $msg);
$emails = 'Passdd'; Mail::send('emails.view', $messageData, function ($message) use ($pwd,$emails) {
$message->to($pwd[0]->email);
$message->subject($emails);
}); return Redirect::to('main')->with('user' , Input::get('username'));
}
else
return Redirect::back();

  send 的第一个参数是view的页面,你可以在view文件夹里添加blade文件,输入相应的代码来显示的数据,我的页面是 {{ $msgnext }};

  第二个参数是一维数组,不可是其他多维的;

  第三个参数是匿名函数,变量名不可与第二个参数一样,可用 use 来连接函数外部的变量。

  这样你的邮件就想发就发了!

上一篇:修改tomcat小猫图标,设置项目的favicon图标


下一篇:[字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案