小编Twi*_*919的帖子

在GO中发送电子邮件,无法设置Return-Path标头

我正在尝试使用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)

go

6
推荐指数
1
解决办法
905
查看次数

导出大型CSV文件

我有一个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)

php csv

4
推荐指数
1
解决办法
1万
查看次数

使用Golang登录私有站点并提取信息

我尝试使用 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)

cookies go cookiejar

4
推荐指数
1
解决办法
3745
查看次数

与MariaDB相比,CockroachDB缓慢插入?

我做了一些测试,看看我是否可以将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)

cockroachdb

1
推荐指数
1
解决办法
891
查看次数

标签 统计

go ×2

cockroachdb ×1

cookiejar ×1

cookies ×1

csv ×1

php ×1