summaryrefslogtreecommitdiff
path: root/test/it_mail.t
blob: 7e892c2b28068377e39d580beff93f370889a32c (plain)
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
#!/www/server/bin/php -qC
<?php

$mail = new it_mail();

#
# header_escape tests
#
is(
	$mail->addrlist_escape('éxample@example.com', true),
	'éxample@example.com',
	"Don't escape plain email addresses in email headers"
);

is(
	$mail->header_escape('éxample@example.com'),
	'=?utf-8?Q?=C3=A9xample@example.com?=',
	"Escape plain email in non-email headers"
);

is(
	$mail->header_escape('search.ch e-mail code d\'accès'),
	version_compare(PHP_VERSION, '7.2.11') < 0
		? '=?utf-8?B?c2VhcmNoLmNoIGUtbWFpbCBjb2RlIGQnYWNjw6hz?='
		: '=?utf-8?Q?search.ch=20e-mail=20code=20d\'acc=C3=A8s?=',
	"Use base64 encoding when php iconv fails with quoted-printable (workaround for php bug #53891)"
);

is(
	$mail->addrlist_escape('Èxample User <èxample@example.com>', true),
	'=?utf-8?Q?=C3=88xample=20User?= <èxample@example.com>',
	"Escape name but not email in email headers"
);

is(
	$mail->addrlist_escape('Example User <example@example.com>', true),
	'Example User <example@example.com>',
	"Don't escape characters that don't need escaping"
);

is(
	$mail->addrlist_escape('example@example.com, éxample@example.com, Sömeone Ëlse <sömeone@example.com>', true),
	'example@example.com, éxample@example.com, =?utf-8?Q?S=C3=B6meone=20=C3=8Blse?= <sömeone@example.com>',
	"Don't escape email addresses but escape realnames"
);

is(
	$mail->addrlist_escape('"Alfred E. Neuman" <neuman@example.com>', true),
	'"Alfred E. Neuman" <neuman@example.com>',
	"Don't remove quoting characters from realname"
);

is(
	$mail->addrlist_escape('"Schmitt, Sören" <schmitt@example.com>', true),
	'=?utf-8?Q?"Schmitt,=20S=C3=B6ren"?= <schmitt@example.com>',
	"Don't remove quoting characters from realname when it contains a quotable character"
);

$mail = new it_mail([
	'From' => 'Someone Ïmportant <ïmportant@search.ch>',
	'To' => 'éxample@example.com, example@example.com, Sömeone Ëlse <sömeone@example.com>, "Alfred E. Neuman" <neuman@example.com>, "Schmitt, Sören" <schmitt@example.com>',
	'Cc' => 'éxample@example.com, example@example.com, Sömeone Ëlse <sömeone@example.com>, "Alfred E. Neuman" <neuman@example.com>, "Schmitt, Sören" <schmitt@example.com>',
	'Bcc' => 'éxample@example.com, example@example.com, Sömeone Ëlse <sömeone@example.com>, "Alfred E. Neuman" <neuman@example.com>, "Schmitt, Sören" <schmitt@example.com>',
	'Subject' => "§önÐë®z€ı¢ħèṇ"
]);

is(
	$mail->to[0],
	'éxample@example.com, example@example.com, =?utf-8?Q?S=C3=B6meone=20=C3=8Blse?= <sömeone@example.com>, "Alfred E. Neuman" <neuman@example.com>, =?utf-8?Q?"Schmitt,=20S=C3=B6ren"?= <schmitt@example.com>',
	'Escape To: field as addrlist'
);

is(
	$mail->cc[0],
	'éxample@example.com, example@example.com, =?utf-8?Q?S=C3=B6meone=20=C3=8Blse?= <sömeone@example.com>, "Alfred E. Neuman" <neuman@example.com>, =?utf-8?Q?"Schmitt,=20S=C3=B6ren"?= <schmitt@example.com>',
	'Escape Cc: field as addrlist'
);

is(
	$mail->bcc[0],
	'éxample@example.com, example@example.com, =?utf-8?Q?S=C3=B6meone=20=C3=8Blse?= <sömeone@example.com>, "Alfred E. Neuman" <neuman@example.com>, =?utf-8?Q?"Schmitt,=20S=C3=B6ren"?= <schmitt@example.com>',
	'Escape Bcc: field as addrlist'
);

is(
	$mail->header_values[0],
	'=?utf-8?Q?Someone=20=C3=8Fmportant?= <ïmportant@search.ch>',
	'Escape From: field as addrlist'
);

is(
	$mail->subject,
	"§önÐë®z€ı¢ħèṇ",
	"Don't escape Subject: field on instanziation"
);

is(
	it_mail::address_error('neuman@example.com, <neuman@example.com>, "Neuman, Alfred E." <neuman@example.com>, aneuman, "<neuman@example>" <neuman@example.com>', " neumann@example.com"),
	null,
	"Accept valid e-mail addresses"
);

foreach (['neuman@example', '"neuman@example.com" <neuman@example>', '<neuma@example.com'] as $email)
	isnt(it_mail::address_error($email), null, "Reject invalid e-mail address $email");