在我试图回答我的问题之后,我尝试了一个新线程。
小解释: 我有一个联系表格,每个字段有180个输入字段+计算。 我想通过电子邮件发送所有字段+计算出的值。
这只是我需要通过邮件发送的180行之一的示例:
<form id="wohnzimmer" method="post" action="mailto:myemail@mymail.com">
<div style="clear: left;">
<div class="text">
DIV TEXT - ANY ARTICLE
</div>
<div class="restText">
<input id="w0" type="text" class="raumeinheitInput_x4 inputWidth" value="0" name="ARTICLENAME" /> = <span class="raumeinheitenErgebnis" id="w0g"> CALCULATED NUMBER </span>
</div>
</div>
// 179 more input-fields will follow here!!
<input type="submit" value="Send Email" />
我的计算正在运行,所以我需要帮助才能通过邮件发送我的所有内容。
我的问题是: 如何在没有Outlook或Thunderbird的情况下发送邮件(我想我需要php) 以下内容:
文章名称,输入字段中的数字(w0) +计算出的数字(w0g)?
我希望有人能给我一个答案。 提前谢谢。
答案 0 :(得分:1)
你可以使用mail()(http://php.net/manual/en/function.mail.php)但我认为如果你使用PHPMailer库(https://github.com/PHPMailer)会更好 非常简单
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient
$mail->addAddress('ellen@example.com'); // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
//Attachments
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
答案 1 :(得分:0)
您需要创建一个PHP文件来为您处理这些“服务器端”操作。然后将HTML表单的action
属性设置为此PHP页面。提交HTML后,180个输入字段全部POST
到名为$_POST
的变量内的PHP页面。然后,您可以处理该数据以创建所需的字符串,并最终使用mail()
函数(或者可能是预先构建的电子邮件程序包,以便您提供更多控制权)来实际发送该电子邮件。
<form id="wohnzimmer" method="post" action="send_email.php">
注意:强>
您说要获取文章的名称w0
和w0g
,但您只在输入中添加了w0
。只有input
s,textarea
和select
将被发送到PHP脚本。您需要更改HTML以确保它们全部收集。我建议使用数组语法来执行此操作:
<input type="hidden" name="article0" value="ARTICLENAME" />
<input id="w0" type="text" class="raumeinheitInput_x4 inputWidth" value="0" name="w0" /> = <input type="text" class="raumeinheitenErgebnis" name="w0g" id="w0g"> CALCULATED NUMBER </input>
<input type="hidden" name="article1" value="ARTICLENAME" />
<input id="w1" type="text" class="raumeinheitInput_x4 inputWidth" value="0" name="w1" /> = <input type="text" class="raumeinheitenErgebnis" name="w1g" id="w1g"> CALCULATED NUMBER </input>
我在这里对你的数据做了一些假设但这应该是有意义的。如果可以的话,您可能希望编写一个PHP循环来输出数据。此外,它可能会帮助您使用HTML输入数组来简化一些事情。
你最终会得到类似非常粗糙的例子:
<?php
$myString = "";
for ($x=0;$x<180;$x++) {
$tempString = $_POST['article' . $x] . $_POST['w' . $x] . $_POST['w' . $x . 'g'];
// don't forget to sanitize this data!!
$myString .= sanitize_however_you_want($tempString);
}
// now email
mail('myemail@mymail.com', 'Email Subject', $myString, 'From: you@yoursite.com' '-fyou@yoursite.com');
mail()
function