-
Notifications
You must be signed in to change notification settings - Fork 17
/
email.php
115 lines (107 loc) · 3.76 KB
/
email.php
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
<?php
if(isset($_POST['file'])||isset($_POST['json'])){
/*
foreach($_POST as $key => $value){// This if for debuging
echo "$key = $value\n";
}*/
if(isset($_POST['file'])){
$scans=array($_POST['file'] => 1);
$prefix='';
}
else{
$scans=json_decode($_POST['json']);
$prefix='Scan_';
}
foreach($scans as $scan => $val){
if(strrpos($scan, "/")>-1)
$scan=substr($scan,strrpos($scan,"/")+1);
if(!file_exists("scans/file/$prefix$scan"))
die(json_encode(array("title"=>"404 Not Found","message"=>"That scan <code>".htmlspecialchars($scan)."</code> no longer exists")));
}
require_once("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing) // 0 = no errors or messages // 1 = errors and messages // 2 = messages only
if($_POST['prefix']!='plain'){// If this returns false, you need a new email service
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = $_POST['prefix']; // sets the prefix to the server
}
$mail->Host = $_POST['host']; // sets the host of the SMTP server
$mail->Port = $_POST['port']; // set the SMTP port for the email server
$mail->Username = $_POST['from']; // username
$mail->Password = $_POST['pass']; // password
$mail->SetFrom($_POST['from']); // who sent it
//SendTO
$to=explode(",",str_replace(" ", "", $_POST['to']));
$list='';
for($i=0,$stp=count($to);$i<$stp;$i++){
if($stp==1)
$mail->AddAddress($to[$i]);
else
$mail->AddBCC($to[$i]);
if($stp==2)
$list.=$to[$i].($i==$stp-2?' and ':', ');
else
$list.=$to[$i].($i==$stp-2?', and ':', ');
}
$mail->Subject = $_POST['title']; // set title
$mail->IsHTML(true);
$message='<!DOCTYPE html><html><head><meta charset="UTF-8"/><title>'.htmlspecialchars($_POST['title']).'</title></head><body style="text-align:center;">';
if(strlen($_POST["body"])>0){
$message.='<p style="text-align:left;">'.str_replace("\n","<br/>",htmlspecialchars($_POST['body'])).'</p>';
$altMsg=$_POST['body']."\n";
}
else
$altMsg="";
$altMsg.="Scanned with PHP Scanner Server";
$message.='<h1>Scanned with <a href="https://github.com/GM-Script-Writer-62850/PHP-Scanner-Server">PHP Scanner Server</a></h1>';
$image=false;
foreach($scans as $scan => $val){
$message.='<h3>'.htmlspecialchars($scan).'</h3><p>';
if(substr($scan,-3)!='txt'){
$mail->AddEmbeddedImage("scans/file/$prefix$scan", $scan);
$message.='<img alt="'.$scan.'" src="cid:'.htmlspecialchars($scan).'"/>';
$image=true;
}
else{
$filedata=file_get_contents("scans/file/$prefix$scan");
$message.=htmlspecialchars($filedata);
if(!$image)
$altMsg.="$filedata\n----------------------\n";
}
$message.="</p>";
}
$mail->CharSet="UTF-8";
$mail->Body="$message</body></html>";
$mail->AltBody=($image?"Please view this in HTML instead of plain text.":$altMsg);
if(!$mail->Send()){
$json=json_decode('{"title":"Email NOT sent!"}');
$json->{"message"}=$mail->ErrorInfo;
echo json_encode($json);
}
else{
$json=json_decode('{"title":"Email sent!"}');
$json->{"message"}=$_POST['from']." has sent <i>".$_POST['title']."</i> to ".substr($list,0,-2);
echo json_encode($json);
}
}
else if(isset($_GET['domain'])){
$data=@file_get_contents("https://autoconfig.thunderbird.net/v1.1/".$_GET['domain']);
if($data){
$JSON=json_decode('{}');
$data=simplexml_load_string($data);
$data=$data->{"emailProvider"}->{"outgoingServer"};
$JSON->{"port"}=(int)$data->{"port"};
$JSON->{"host"}=(string)$data->{"hostname"};
$JSON->{"prefix"}=(string)$data->{"socketType"};
$JSON->{"type"}=(string)$data->attributes()->{"type"};
echo json_encode($JSON);
}
else{
echo '{"error":404}';
}
}
else{
echo '{"title":"404 Not Found","message":"No scan or domain specified"}';
}
?>