我正在尝试使用smtp包的内置功能从GO发送一封简单的电子邮件.
我的简单代码如下:
func sendEmail(to string, body []byte) error {
auth := smtp.PlainAuth(
"",
config.SmtpUsername,
config.SmtpPassword,
config.SmtpHostname,
)
return smtp.SendMail(
fmt.Sprintf("%s:%d", config.SmtpHostname, config.SmtpPort),
auth,
config.SmtpUsername,
[]string{to},
body,
)
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理是,它始终将Return-Path标头设置为config.SmtpUsername的值,即使我发送包含自定义Return-Path标头的消息,基本上在发送消息之后,似乎以某种方式返回 - 消息的路径将替换为smtp用户名.
有关如何避免这种情况的任何想法,并使GO使用我给出的任何返回路径?
LE 1:如果有任何帮助,可以在以下网址找到代码片段:http
://play.golang.org/p/ATDCgJGKZ3 LE 2:我可以通过swiftmailer从php实现所需的行为,因此我不认为传送服务器正以任何方式改变标题.
更多代码:
PHP与swiftmailer,它设置正确的返回路径:
Yii::import('common.vendors.SwiftMailer.lib.classes.Swift', true);
Yii::registerAutoloader(array('Swift', 'autoload'));
Yii::import('common.vendors.SwiftMailer.lib.swift_init', true);
$hostname = '';
$username = '';
$password = '';
$returnPath = '';
$subject = 'Swiftmailer sending, test return path';
$toEmail = '';
$transport = Swift_SmtpTransport::newInstance($hostname, 25);
$transport->setUsername($username);
$transport->setPassword($password);
$logger = new Swift_Plugins_LoggerPlugin(new …Run Code Online (Sandbox Code Playgroud) 我有一个mysql表,其中每个记录可以具有无限的自定义字段(EAV模型,无关紧要),并且每个字段可以具有无限的选项,并且每个选项可以具有无限的值。
现在,我正在尝试构建一个导出工具,该工具将导出所有这些自定义字段及其值,即:每个字段的名称=>值对。这不是重要的部分,它只是在这里强调我们正在谈论很多针对单个记录的mysql查询,并且导出的大小将非常大。
对于主表中的每一行,我必须执行大约100个单独的sql查询,以获取字段,字段选项和字段选项值。这些查询非常快,因为它们都使用正确的索引,但是我们仍然在谈论单个记录的100个查询,我希望刚开始时我的主表中会有大约5万条记录。
现在,我要做的是:
set_time_limit(0);
ini_set('memory_limit', '1G');
ini_set("auto_detect_line_endings", true);
$count = $export->count();
$date = date('Y-m-d-H-i-s');
$fileName = CHtml::encode($export->name) .'-'. $date . '.csv';
$processAtOnce = 100;
$rounds = round($count / $processAtOnce);
header("Content-disposition: attachment; filename={$fileName}");
header("Content-Type: text/csv");
$headerSet = false;
for ($i = 0; $i < $rounds; ++$i) {
$limit = $processAtOnce;
$offset = $i * $processAtOnce;
$rows = $export->find($limit, $offset);
if (empty($rows)) {
continue;
}
$outStream = fopen('php://output', 'w');
if (!$headerSet) {
fputcsv($outStream, array_keys($rows[0]), ',', '"');
$headerSet = true;
}
foreach …Run Code Online (Sandbox Code Playgroud) 我尝试使用 golang 登录网站的私人区域并提取一些信息,但我似乎不太正确。我设法获取登录页面以获取 csrf 令牌,然后将 csrf 令牌与登录信息一起发布到登录页面,然后我就可以正常登录了。如果我在此时停止,我可以看到我被重定向的页面。但是,从此时开始的任何后续调用都会将我重定向回登录。
代码
package main
import (
"github.com/PuerkitoBio/goquery"
"io"
_ "io/ioutil"
"log"
"net/http"
"net/url"
_ "strings"
"sync"
)
type Jar struct {
sync.Mutex
cookies map[string][]*http.Cookie
}
func NewJar() *Jar {
jar := new(Jar)
jar.cookies = make(map[string][]*http.Cookie)
return jar
}
func (jar *Jar) SetCookies(u *url.URL, cookies []*http.Cookie) {
jar.Lock()
jar.cookies[u.Host] = cookies
jar.Unlock()
}
func (jar *Jar) Cookies(u *url.URL) []*http.Cookie {
return jar.cookies[u.Host]
}
func NewJarClient() *http.Client {
return &http.Client{
Jar: NewJar(),
}
}
func fetch(w …Run Code Online (Sandbox Code Playgroud) 我做了一些测试,看看我是否可以将CockroachDB用于我的一个小项目.我在同一个DC中创建了两个相同的VPS,并在其中一个上安装了CockroachDB,另一个安装了MariaDB,然后创建了两个测试数据库来存储数据.每次以5K的批量执行1M插入.我没有对VPS/db服务器进行任何更改,它们只是在安装后运行.
CockroachDB架构:
root@:26257/test> show create table customers;
+-----------+------------------------------------------------------------------+
| Table | CreateTable
|
+-----------+------------------------------------------------------------------+
| customers | CREATE TABLE customers (?
|
| | id INT NOT NULL DEFAULT unique_rowid(),?
|
| | first_name STRING NULL,?
|
| | last_name STRING NULL,?
|
| | age INT NULL,?
|
| | CONSTRAINT "primary" PRIMARY KEY (id ASC),?
|
| | FAMILY "primary" (id, first_name, last_name, age)? |
| | )
|
+-----------+------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
MariaDB的:
MariaDB [test]> show create table customers \G; …Run Code Online (Sandbox Code Playgroud)