使用开放式输入域&使用PHP根据输入(如邮政编码或州)向三个不同的电子邮件地址中的一个发送电子邮件


Use open ended input field & use it to email one of three different email addresses based on input such as, zip code or state with PHP?

我有一个网站,在侧边栏中有一个报价请求。他们现在希望按输入按状态对请求进行排序,但该字段是开放的。它目前接受任何内容,但不接受空白。首先,有人能推荐一个收集一个州所有邮政编码的好地方吗?我目前看到仅GA就有1365个邮政编码,我可以调用或下载一些API吗?我们甚至还没有谈到城市。城市和州是否有可能做到"Zip"?除了侧栏中已有的输入字段外,还会建议强制他们在下拉菜单中选择一个状态吗?

$moving_from = strtolower($moving_from);
if($moving_from === 'georgia' || $moving_from === 'ga') {
    $emailTo = 'georgia@example.com';
}
<div class="main-input">
<label>Moving From:</label>
<input name="moving_from" type="text" value="<?php echo $moving_from; ?>" class=""/>
</div>
if(!isset($hasError)) {
    $subject = 'Submitted message from '.$f_name;
    $email2name = 'Website Lead';
    $body  = '<table><tbody>';
    $body .= '<tr><td>Name:</td><td>'.$f_name.'</td></tr>';
    $body .= '<tr><td>Date Of Move:</td><td>'.$date_of_move.'</td></tr>';
    $body .= '<tr><td>Moving From:</td><td>'.$moving_from.'</td></tr>';
    $body .= '<tr><td>Moving To:</td><td>'.$moving_to.'</td></tr>';
    $body .= '<tr><td>Email:</td><td>'.$email.'</td></tr>';
    $body .= '<tr><td>Phone Number:</td><td>'.$phone.'</td></tr>';
    $body .= '<tr><td>Size Of Move:</td><td>'.$size_of_move.'</td></tr>';
    $body .= '<tr><td>Comments:</td><td>'.$comments.'</td></tr>';
    $body .= '</tbody></table>';
    $headers = "MIME-Version: 1.0" . "'r'n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "'r'n";
    $headers .= 'From: '.$email2name.' <'.$email2.'>' . "'r'n";
    mail($emailTo, $subject, $body, $headers);
    $emailSent = true;
}

邮政编码的2位数前缀(几乎)唯一地定义了州。前3位数字将唯一地定义状态。美国邮政在这里有一个完整的3位数前缀列表:http://pe.usps.com/text/LabelingLists/L002.htm。我相信你可以从某个地方下载CSV/Excel文件,里面有这些信息。

然而,更好的方法可能是使用USPS的api进行地址和邮政编码验证。USPS有WebTools API。与它们合作有点烦人,但它们是免费的,也没有那么糟糕。您可以使用一个PHP库,它可以消除大部分复杂性:https://github.com/VinceG/USPS-php-api。查看"City State Lookup"示例,它与您想要做的非常相似。
$verify->addZipCode('91730');
print_r($verify->lookup());
$response = $verify->getArrayResponse();
$validated_state = $response['State'];
print_r($response);
echo $validated_state;

其他选项为http://zipcodedistanceapi.redline13.com/和http://smartystreets.com/products/liveaddress-api