PHPMailer受密码保护的附件

时间:2015-08-19 13:03:36

标签: php mysql passwords phpmailer password-protection

我正在编写PHP脚本,从mysql数据库导入一些数据并通过附件中的电子邮件发送。但是有一个问题 - 将来有可能,数据将是敏感的。所以我需要设置密码到附件。

我正在使用phpmailer方法addStringAttachment

一些代码:

<?php
require 'PHPMailerAutoload.php';
$con = new mysqli("x", "x", "x", "x");


$utf1 = "SET NAMES utf8";
$utf2 = "SET character_set_results = 'utf8',
character_set_client = 'utf8',
character_set_connection = 'utf8',
character_set_database = 'utf8',
character_set_server = 'utf8'";

$con->query($utf1);
$con->query($utf2);


$output ='';
$result = $con->query("select * from xxx WHERE DATE( entry_date ) BETWEEN ( DATE( CURDATE( ) - INTERVAL 3 DAY )) AND ( DATE( CURDATE( ) - INTERVAL 1 DAY ) )");
$columns_total = $con->field_count;


// Get The Field Name
for ($i = 0; $i < $columns_total; $i++) {
    $heading = mysqli_fetch_field_direct($result, $i)->name;
    $output .= '"'.$heading.'";';
}

$output .="\n";

// Get Records from the table
while ($row = $result->fetch_array()) {
    for ($i = 0; $i < $columns_total; $i++) {
        $output .='"'.$row["$i"].'";';
    }
    $output .="\n";
}

$filename = "myFile.xls";
header('Content-Encoding: UTF-8');         

$bomoutput = "\xEF\xBB\xBF" . $output;

$con->close();

PHPMailer的:

$mail = new PHPMailer;

[...]

$mail->From = 'xx';
$mail->FromName = 'xx';
$mail->addAddress('xx');     // Add a recipient

$mail->addStringAttachment($bomoutput, $filename);   

$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';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

我讨论UTF-8字符的一些问题,所以我必须使用UTF8 BOM。你能给我一些建议/提示,如何至少设置附件安全级别?它不会如何加密 - 但它必须是。请给我一根棒。

1 个答案:

答案 0 :(得分:0)

这与PHPMailer或MySQL没有任何关系 - 它们会存储或发送您喜欢的任何内容,如果您想加密它,那取决于您。

PHP有几个允许你加密字符串的函数 - 但如果你想确保收件人能够轻松解密它,那么让它更有用 - zip文件可能是最简单的解决方案。

This question有一些很好的建议。